2014-10-27 155 views

回答

4

doSomething不是函數。這是undefined

doSomething = (function(x) { 
    alert(x) 
})(); 

這聲明一個匿名函數,立即執行它(這是()做什麼),然後設置doSomething的返回值 - undefined。您的匿名函數需要一個參數(x),但沒有任何內容傳遞給它,因此xundefined

你可能想這樣的:

doSomething = function(x) { 
    alert(x) 
}; 

doSomething(123); 
2

您需要刪除括號,現在你定義的功能,並立即用一個空的參數列表調用它。將其更改爲:

doSomething = function(x) { 
    alert(x) 
} 

然後您可以調用它。

0

這不是更好的方法嗎?讓它初始化,然後調用它傳遞一個參數?

doSomething = (function(x) { 

    return(
      init = function(x){ 

      alert(x) 
      } 
     ) 


})(); 

doSomething("test") 
+0

現在你只是讓它更復雜。你爲什麼要創建一個* global *變量'init'?爲什麼主要的匿名者使用參數'x'?如果你真的想這樣做,請執行以下操作:'doSomething =(function(){return function(x){alert(x);};})();' – 2014-10-27 20:31:06

+0

*你實際存在什麼問題*試圖在這裏解決?爲什麼你需要使用自動調用的匿名函數?爲什麼不只是'doSomething = function(x){alert(x); };'? – 2014-10-27 20:32:27

+0

我的一個年輕的同事開發者已經用這種方式包裝了他的所有功能,我正在試圖繞過我的頭來解釋爲什麼。我從來不用這種方式編碼,但他堅持認爲這是良好的做法?任何解釋? – 2014-10-27 20:45:35

相關問題