我看过这样的JavaScript:
function () {
// do something
}()
最近这样的事情:
(function () {
// do something
})()
有什么区别吗?两者都立即执行正确吗?
修改
关于第一个例子的说明。该函数正从另一个应用程序传递到浏览器,因此我的结果没有错误。在浏览器中运行时会抛出错误。在深入研究之后,我发现应用程序API正在将函数传递给eval
。以上两个例子都适用于我,这就是我提出这个问题的原因。
答案 0 :(得分:3)
这两个功能都不会立即执行。立即调用的函数表达式在的末尾都有括号。像这样:
(function () {
console.log("not hello");
});
(function () {
console.log("hello");
})();
//^^
括起函数的括号将其转换为返回函数本身的表达式。然后,您只需使用()
调用返回的值(即函数)。看看IIFE。
编辑:编辑完成后,第一个函数只会抛出SyntaxError: Unexpected token (