2014-06-07 80 views
0

我現在有一些代碼,看起來像這樣:js函數是否在模塊外可訪問的模塊中定義?

// when the document is ready 
    execute myFunction(); 

    (function($){ 
     function myFunction() 
     { 
     // code 
     }; 
    })(jQuery); 

控制檯是說沒有定義myFunction的......爲什麼呢?

+0

取決於所使用的各種模塊的模式,以及是否導出。在你的情況下,它顯然不是。 – Bergi

+0

*「控制檯說myFunction沒有被定義......爲什麼?」*因爲JavaScript具有詞彙範圍。 'myFunction'是在另一個函數內定義的,因此不能在該函數之外訪問。 –

回答

1

這是不可訪問的,因爲你已經把你的函數放在另一個自我調用函數中,並且它的調用超出了它的範圍。

您的評論指出您希望呼叫myFunction()在加載時發生,如果您當前的代碼有效,則不會如此。它會在DOMReady之前調用該函數。

爲了得到你想要的行爲,將SIF中的函數調用:

(function($){ 
    myFunction(); 

    function myFunction() { 
     // code 
    }; 
})(jQuery); 
相關問題