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

Why does function(){} not work, but (function(){}) does? (Chrome DevTools/Node)

本文关键字:function DevTools Chrome Node 不起作用 为什么 起作用      更新时间:2023-09-26

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

function(){} 

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

它抛出一个Uncaught SyntaxError

但CCD_ 2或CCD_。

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

SyntaxError:函数语句必须有一个名称。

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

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

功能声明:

function foo() {
    // ...
}

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

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

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

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

然后您可以立即调用它:

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

要了解更多详细信息,请查看JavaScript中的函数定义。

(function(){})中的括号表示函数求值,对象现在包含在括号内,此求值返回函数。它可以这样调用:(function(){})();

function(){}不进行评估。这会导致错误,因为正如您所说,您将无法以任何方式使用它。