当前位置:  开发笔记 > 编程语言 > 正文

为什么function(){}不起作用,但是(function(){})呢?(Chrome DevTools/Node)

如何解决《为什么function(){}不起作用,但是(function(){})呢?(ChromeDevTools/Node)》经验,为你挑选了2个好方法。

我现在已经看到了这种奇怪的行为,我无法定义

function(){} 

要么

function(a){
   console.log(a)
}

它抛出一个Uncaught SyntaxError.

但是test = function(){}或者(function(){})确实有效.

Safari开发工具有一个更好的错误报告:它说

SyntaxError:Function语句必须具有名称.

好吧,如果你永远不会使用它,那么定义一个类似的函数是没有意义的.但它仍然很奇怪.我想我已经在问题中提供了答案.



1> Marius Schul..:

JavaScript具有函数声明函数表达式.前者不能立即调用,而后者可以.这是语言语法的问题.

功能声明:

function foo() {
    // ...
}

函数表达式(在右侧=):

var foo = function() {
    // ...
};

通过在函数周围添加括号,您强制将函数解析为函数表达式,因为不可能在括号内放置函数声明(只有表达式是预期和接受的):

(function foo() {
    // ...
});

然后,您可以立即调用它:

(function foo() {
    // ...
})();

有关更详细的说明,请查看JavaScript中的函数定义.


请注意,规范术语是*函数声明*."功能声明"确实意味着ES6之前的特殊功能.

2> Michal Paszk..:

括号(function(){})表示函数计算,对象现在包含在括号内,此评估返回函数.它可以被称为:(function(){})();.

function(){}没评价.导致错误是有道理的,因为如你所说,你将无法以任何方式使用它.

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有