3
我限定在一個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
:
TypeError: undefined is not a function
的[爲什麼這個分組操作符+函數調用立刻(可能重複http://stackoverflow.com/questions/14810951/why-is-this-grouping-operator-function-immediatly-invoked) –
您應該在語句後始終使用分號 - https://stackoverflow.com/a/444082/1766230 – Luke