繁体   English   中英

立即调用的函数表达式抛出“对象不是函数”

[英]Immediately invoked function expression throws “object is not a function”

我在Javascript文件中定义了各种模块:

var module = {/* ... */}

(function(){
    console.log('Invoked');
})()

但是, IIFE引发错误:

> TypeError:对象不是函数

我尝试仅复制并粘贴IIFE代码,没有问题。

模块定义在声明的末尾需要一个分号:

var module = {/* ... */}; // <======= Semicolon!

(function(){
    console.log('Invoked');
})()

没有它,Javascript将尝试调用该对象:

var module = {/* ... */}(function(){console.log('Invoked');})()

或缩短:

var module = {/* ... */}()

尝试彼此相邻编写两个IIFE时,会遇到相同的问题:

(function(){})()
(function(){})()

这不起作用,因为单个函数声明返回undefined

TypeError:未定义不是函数

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM