javascript - 立即调用的函数表达式运行最后定义的函数。为什么?

标签 javascript iife

<分区>

在使用立即调用的函数表达式时,我遇到了一些我没想到会发生的奇怪行为。当末尾有一个 IIFE 时,下面的代码运行函数 hello。为什么会这样?

var hello = function () {
    console.log("hello");
}

(function () {

})();

最佳答案

运行这个,不会的

var hello = function () {
    console.log("hello");
};

(function () {
})();

这是因为 JavaScript 解释器将其理解为连续代码,除非您将 ; 标记为语句的结尾。

你的代码

var hello = function () {
    console.log("hello");
}

(function () {
})();

居然变成这样

var hello = function () {
               console.log("hello");
            }(function(){})();

解释器通过将 function () {} 作为参数立即运行 hello 函数,并为下一个 () 抛出错误.

关于javascript - 立即调用的函数表达式运行最后定义的函数。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33847464/

相关文章:

javascript - 如何使用createEvent和dispatchEvent设置焦点并设置输入文本中的文本?

javascript - Sublime Text 2 中的 JsLint

javascript - 如何使用 forEach 循环在 IIFE 中调用数组?

javascript - 为 javascript 库创建命名空间

JavaScript 匿名函数表达式 vs IIFE

javascript - Discord.js 获取消息的 id 并将其删除

javascript - 如何使用浅渲染而不是使用 NO_ERRORS_SCHEMA 编写 Angular Jasmine 简单的 'should create' 测试用例

javascript - 如何使用键盘滚动照片

javascript - 编写 IIFE 有哪些不同的方式?他们的用例是什么?

javascript - 立即函数调用语法