为什么函数语句需要一个名称
Why function statement requires a name?
为什么我可以写
var foo = function(){}();
But can not
function(){}();
是否有设计上的原因?
第一个例子是一个赋值:右边是一个表达式,立即执行一个匿名函数是有意义的。
第二个例子是声明:一旦关闭"}"
被击中,声明就结束了。父元素本身的没有意义——它们必须包含一个表达式。后面的")"
是错误的
独立声明必须转换为表达式:
(function() {})(); // Or...
(function() {}());
第一个语句使声明成为表达式,然后执行结果。第二个语句将声明和执行都转换为表达式。
参见什么时候使用括号,什么时候不用?
您可以(function(){})();
,并且您没有在:var foo = function(){}();
中命名函数
您将foo
设置为函数的返回值,在您的情况下是undefined
,因为所有函数在JavaScript中返回一些东西。
第一次使用函数
var foo = function(){}()
位于表达式位置,而不是语句位置。另一方面,第二个语句位于顶层,作为函数语句。也就是说,'function'可以在两种不同的上下文中使用,它的意思也可能有细微的不同。
如果你想创建没有名字的匿名函数,你可以用函数表达式来实现。而且,由于JavaScript语言语法的工作方式,在某些上下文中需要父元素,正如Dave Newton所提到的,因为你放置单词"function"的地方可能会与它的语句版本混淆(这确实需要一个名称)。
相关文章:
- 我可以在json对象中添加一个函数吗
- 如何在JQuery函数中定义一个值,然后调用另一个函数并使用该值
- 是否可以将一个函数输入连接到另一个函数调用的文本
- 在另一个函数中使用变量this
- 在另一个函数成功结束后调用该函数
- mongoose.connect undefined不是一个函数
- 监听器必须是一个函数
- 使用JS函数来使用另一个函数的语法?node.js
- 如何取消object.prototypes javascript的一个函数
- 从Chrome扩展名中的popup.html文件在background.js文件中运行一个函数
- 嵌套到另一个函数中的Fancybox函数;不起作用
- 如何在javascript中使用不止一个函数
- jQuery-在页面加载时执行一个函数
- jquery UI draggable:UI.children不是一个函数
- jQuery Mobile Undefined不是一个函数
- 如何在php中创建一个函数,该函数与文本区域一起工作,通过输入类似[color:red]的内容来打印具有等效颜色的文本
- javascript函数将数据添加到屏幕,但随后被另一个函数覆盖
- JS异常:animate不是一个函数
- 如何将一个函数附加到一个不存在的元素上
- JavaScript/jQuery-添加添加和删除类与下一个函数之间的延迟