立即调用的函数表达式运行最后定义的函数.为什么?
Immediately invoked function expressions runs the last defined function. Why?
在使用立即调用的函数表达式时,我遇到了一些意想不到的奇怪行为。下面的代码在末尾有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
函数,并为下一个()
抛出错误。
相关文章:
- 用嵌套函数和默认函数定义函数
- 使用Extjs进行函数定义
- JS中奇怪的函数定义语法
- 重写javascript函数定义
- 使用角度图时,我可以用函数定义数据点颜色吗
- modal.js中的匿名函数定义
- 为从AJAX调用中utlizes DATA参数的函数定义回调
- Emacs:在 etag 中查找函数定义
- Javascript:对象函数定义
- 为什么要在函数定义之外引用静态变量(函数属性)
- Ember 对象函数定义中的计算属性.js
- javascript/jQuery中函数定义的区别
- CoffeeScript 承诺与函数定义链接
- 如何在使用 eval() 评估 JavaScript 时将回调函数定义作为参数传递
- Javascript - 为什么下面的函数定义错误
- 使用函数声明时的自定义函数(也称为惰性函数定义)
- JavaScript 函数定义不正确
- jQuery off on 时是用匿名函数定义的
- 停止 IntelliJ 11 在启用 JSLint 时向每个嵌套函数定义添加“use strict”
- 为什么不是't我为这个函数定义的javascript函数