我在一个Javascript
文件中定义了各种模块:
var module = {/* ... */}
(function(){
console.log('Invoked');
})()
但是IIFE
抛出一个错误:
> 类型错误:对象不是函数
我尝试只是复制和粘贴IIFE
代码,没有问题。
我在一个Javascript
文件中定义了各种模块:
var module = {/* ... */}
(function(){
console.log('Invoked');
})()
但是IIFE
抛出一个错误:
> 类型错误:对象不是函数
我尝试只是复制和粘贴IIFE
代码,没有问题。
模块定义在声明的末尾需要一个分号:
var module = {/* ... */}; // <======= Semicolon!
(function(){
console.log('Invoked');
})()
没有它,Javascript 将尝试调用该对象:
var module = {/* ... */}(function(){console.log('Invoked');})()
或缩短:
var module = {/* ... */}()
尝试编写两个相邻的 IIFE 时,您会遇到同样的问题:
(function(){})()
(function(){})()
这不起作用,因为单个函数声明返回undefined
:
类型错误:未定义不是函数