2012-12-17 40 views
1

「函數定義可能不會出現在if語句,while循環或任何其他語句中」的含義是什麼。我對這個聲明很困惑。「函數定義可能不會出現在語句中」的含義

+2

http://stackoverflow.com/questions/3037598/how-to-get-around-the-jslint-error-dont-make-functions-within:條件功能分配總是可以用這樣的語法做-a-loop – elclanrs

+2

向我們展示有問題的代碼並告訴我們產生該消息的是什麼。 – jfriend00

+0

此消息來自何處? –

回答

0

本書中讀到的一個問題是函數定義(與函數賦值不同)在一些瀏覽器中基本上被掛起到主機函數的頂部,因此將其放入一個語句(如在if聲明中)是徹頭徹尾的誤導。該代碼將使它看起來像函數將只在if語句的那個​​分支執行時被定義,但不一定是這種情況。所以,這是一個不好的做法。它在很多情況下可能有效,但這是一種不好的做法。

所以,與其這樣:

function main(foo) { 
    if (foo) { 
     function internal() { 
      // code here 
     } 
     // code here 
    } 
} 

把內部功能在最頂端;

function main(foo) { 
    function internal() { 
     // code here 
    } 
    if (foo) { 
     // code here 
    } 
} 

僅供參考在嚴格模式下,內部函數定義只允許在最上面。

var internal; 
if (foo) { 
    internal = function() {} 
} 
相關問題