JavaScript中函数命名机制
2015-09-18 14:08
393 查看
在Javascript中,为大家熟知的创建函数的方法有两种:
类型1、
类型2、
然而,当两种方式混合的时候,会发生什么样的结果呢?
请问g、g()存在吗?
经过测试,得到的结果是:
所得结果分析:
1、console.log(f); 结果为function g(){ ... };
其代表的意思是f这一个函数。
2、console.log(f()); 结果为23。
其代表的意思是f()函数执行后的结果。
3、console.log(g) && console.log(g())
结果均为:
可见其实g并不存在。
那么g在哪里呢?看回结果1,你就可以发现答案——g其实依附在f中,而并没有独立的声明。
总结:在使用类型1的方式创造函数的时候,等号左边的函数名才是主函数名;右边的函数名是该匿名函数的标识符。
参考文档:出处:http://www.osmn00.com/translation/240.html
虽然函数表达式经常被书写为采用匿名函数的形式,但你依然可以为这个匿名函数赋予一个明确的标识符。这个函数表达式的变种被称为一个命名的函数表达式(named function expression)。
这个例子和采用匿名函数方式的函数表达式是一样的,但我们为函数字面量赋予了一个明确的标识符。和前一个例子不同,这时的name属性的值是“add”,这个值同我们为其赋予的那个标识符是一致的。 JavaScript允许我们为匿名函数赋予一个明确的标识符,这样就可以在这个函数内部引用其本身。
类型1、
var f = function(){ ... }
类型2、
function f(){ ... }
然而,当两种方式混合的时候,会发生什么样的结果呢?
var f = function g(){ ... }
请问g、g()存在吗?
经过测试,得到的结果是:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> </head> <body> <script> var f = function g(){ return 23; } console.log(f); console.log(f()); console.log(g); console.log(g()); </script> </body> </html>
所得结果分析:
1、console.log(f); 结果为function g(){ ... };
其代表的意思是f这一个函数。
2、console.log(f()); 结果为23。
其代表的意思是f()函数执行后的结果。
3、console.log(g) && console.log(g())
结果均为:
可见其实g并不存在。
那么g在哪里呢?看回结果1,你就可以发现答案——g其实依附在f中,而并没有独立的声明。
总结:在使用类型1的方式创造函数的时候,等号左边的函数名才是主函数名;右边的函数名是该匿名函数的标识符。
参考文档:出处:http://www.osmn00.com/translation/240.html
命名的函数表达式(Named Function Expression)
虽然函数表达式经常被书写为采用匿名函数的形式,但你依然可以为这个匿名函数赋予一个明确的标识符。这个函数表达式的变种被称为一个命名的函数表达式(named function expression)。var add = function add(a, b) { return a + b; }; console.log(typeof add); // 'function' console.log(add.name); // 'add' console.log(add.length); // '2' console.log(add(20, 5)); //'25'
这个例子和采用匿名函数方式的函数表达式是一样的,但我们为函数字面量赋予了一个明确的标识符。和前一个例子不同,这时的name属性的值是“add”,这个值同我们为其赋予的那个标识符是一致的。 JavaScript允许我们为匿名函数赋予一个明确的标识符,这样就可以在这个函数内部引用其本身。
相关文章推荐
- js bookmark doubanfm lyrics
- JS 之高级函数
- 原生JS获取各种高度宽度、浏览器窗口滚动条的位置、元素的几何尺寸名
- JS判断移动设备的终端类型(浏览器UserAgent)
- js函数参数设置默认值的一种变通实现方法
- js实现图片旋转
- jsp页面可以巧用模态框
- 跨域触发事件(子页面用js触发父页面元素的事件)
- 论servlet和jsp 的区别
- js数组操作
- JS 多维度星级评论
- JSP 生成静态HTML页面
- 基础的JavaScript编码规范
- json-simple简明教程
- event.x,event.clientX,event.offsetX区别
- toString,一个自动调用的方法
- 好用的javascript插件集合
- js中的函数
- jsp简单的用户登录界面
- JS代码:文字一个个显示,添加放大效果