我正試圖在自執行匿名函數中包裝JavaScript對象字面值。下面的第一個代碼示例工作正常,但第二個代碼示例沒有,我不確定爲什麼?如何在JavaScript中返回對象字面值
作品:
(function(){
return MyApp = {
init: function() {
console.log('MyApp init');
}
}
})();
不起作用:
(function(){
var MyApp = {
init: function() {
console.log('MyApp init');
}
}
return MyApp;
})();
據我瞭解的東西,在SEAF應執行並立即返回。這就是爲什麼第一個示例將MyApp作爲可以與之交互的對象返回。我以爲MyApp的分配向SEAF內一個變量,然後返回它會做同樣的事情,但在:
Uncaught ReferenceError: MyApp is not defined
爲什麼?
在你的第一個例子你結果賦給名爲「MyApp的」全局變量。在第二種情況下,您將變量分配給名爲'MyApp'的閉包局部變量。您必須在某處指定閉包執行的結果,否則它會丟失。 –
[你的代碼工作正常](http://jsfiddle.net/m5QeQ/)假設你捕獲返回值。 – zzzzBov
正如zzzzBov指出的那樣,如果你把'var someName =(theClosureExecution)' –