2011-04-26 29 views
10

從一個js到另一個js調用函數的規則是什麼?我認爲這工作,但我沒有遇到問題(通過火狐算出來),在另一個js文件中的函數似乎不能在我的第一個js文件中識別。在另一個.js文件中調用javascript方法

是否有一些有關排序的規則或一些你必須做的操作才能使它起作用?

回答

7

你是在事件處理程序中調用函數還是在加載JavaScript文件時立即調用該函數?如果它不在事件處理程序中,則加載順序非常重要。如果您有循環依賴關係,則可能需要使用「DOM ready」或window.onLoad偵聽器來延遲一些初始化。

+0

所以如果它來自一個事件處理程序,我不需要擔心?? – leora 2011-04-26 12:22:03

3

瀏覽器按照它們出現在HTML中的順序解析javascript文件。因此,如果第一個文件中的函數依賴於第二個文件中的函數,那麼它將不起作用。如果你使用$(function(){});例如使用jQuery,這是指示JavaScript等待窗口對象觸發onload事件。這可確保頁面上的所有元素在執行前已被加載。

31

它必須在全球範圍內的某個地方可以訪問。例如:

// file1.js 
function hello() { 
    alert("Hello, world!"); 
} 
// file2.js 
$(function() { 
    hello(); 
}); 

可能的是,你有這樣的事情:

// file1.js 
$(function() { 
    function hello() { 
     alert("Hello, world!"); 
    } 
    // ... 
}); 
// file2.js 
$(function() { 
    hello(); 
}); 

hello只有在file1.js所述的封閉的範圍。因此,要訪問它file2.js,你必須將其導出到的地方在那裏file2.js可以得到它:

// file1.js 
$(function() { 
    function hello() { 
     alert("Hello, world!"); 
    } 
    window.hello=hello; 
}); 
// file2.js 
$(function() { 
    hello(); 
}); 

而且,當函數定義必須加載,解析和執行前的腳本函數可以從另一個腳本調用。

+0

你最後2行對我很有價值。謝謝 – 2015-10-06 14:44:37

相關問題