javascript - 为什么 function(){} 不起作用,但 (function(){}) 起作用? (Chrome 开发者工具/节点)

标签 javascript

<分区>

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

function(){} 

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

它抛出一个Uncaught SyntaxError

但是 test = function(){}(function(){}) 确实有效。

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

SyntaxError: Function statements must have a name.

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

最佳答案

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

函数声明:

function foo() {
    // ...
}

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

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

通过在函数周围添加圆括号,您强制将函数解析为函数表达式,因为不可能将函数声明放在圆括号内(此处只需要和接受表达式):

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

然后您可以立即调用它:

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

有关更详细的文章,请查看 Function Definitions in JavaScript .

关于javascript - 为什么 function(){} 不起作用,但 (function(){}) 起作用? (Chrome 开发者工具/节点),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34334232/

相关文章:

javascript - Extjs 在Checkbox两侧添加标签

javascript - 扩展内置的 javascript Promise

javascript - 在 javascript 文件中设置 firebase-admin sdk

javascript - 如何在单击 div/图像的特定区域时运行不同的 Javascript 函数

javascript - 如何使用元标记放宽内容安全策略

javascript - 从 Firebase 存储加载图片到 React

javascript - 为什么 IE8 加载 JavaScript 不完全?

javascript - 针对字符串测试子字符串数组

c# - 将 C# 变量传递给 JS 的最佳方式

具有编程样式的 Javascript 可编辑区域