2017-02-27 72 views
1

假設我有兩個文件A.js和B.js.比方說,我在導入他們在我的HTML如下JavaScript在瀏覽器中加載腳本(排序)

<script type="text/javascript" src="A.js"></script> 
 
<script type="text/javascript" src="B.js"></script>

比方說,我定義裏面A.一些變量

1)我可以從訪問變量B中 2 )什麼是加載順序。乙能來嗎?

+1

谷歌搜索和粗略的測試會回答這兩個問題你。您可以通過創建變量並嘗試調用它來回答1,並且您可以通過瀏覽器的網絡控制檯來回答2。 – Utkanos

+1

@Utkanos,當然我測試過了,但我可以相信文件A總是被加載過嗎? – yerassyl

+0

好吧,您可以在js文件之外定義全局範圍變量(在加載之前),然後在文件內與它們交互。 - 它爲我這個基於客戶端的HTML遊戲工作。 –

回答

1

是的,你可以從B中訪問該變量。但是在A中,除非它完成加載,否則你將無法訪問B的變量。加載將保持序列A然後B.我會更喜歡如果您使用jquery並使用document.reday函數並訪問其中的變量。這將等待,直到你的所有腳本都被加載,然後它將開始執行。超出任何函數的變量都是js中的全局變量,因此您可以從任何想要的位置訪問該變量。

3

HTML spec

有可以使用這些 屬性來選擇了三個可能的模式。如果異步屬性存在,那麼腳本將是 異步執行,只要它是可用的。如果異步 屬性不存在,但延遲屬性存在,那麼當頁面完成解析時,將執行 腳本。如果 屬性都不存在,則在用戶代理繼續解析頁面之前立即提取並執行腳本 。

所以,只要你不使用deferasync屬性,A將提供給B.js

0

Javascript不像其他編程語言。首先,它們是連續加載的,此外,在B語言結束之前,B中的變量不可訪問。

換句話說,在您面臨的情況下,您不能在B中調用A中的任何內容,直到頁面加載完成或您可以使用jQuery文檔準備就緒。

0

使用此以下,

<script type="text/javascript"> 
    var test = ""; 
</script> 
<script type="text/javascript" src="A.js"></script> 
<script type="text/javascript" src="B.js"></script> 
+0

他爲什麼要用這個? –