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