簡體   English   中英

是否可以在一個javascript文件中聲明一個變量並在另一個javascript文件中使用它?

[英]Is it possible to declare a variable in one javascript file and use it in another one?

如果我有一個javascript 文件

var myVariable = "Awesome variable";

和另一個javascript 文件

function printMyVariable() {
    document.writeln(myVariable);
}

printMyVariable方法能夠識別myVariable嗎? 我的猜測是“否”,因為myVariable范圍在第二個javascript文件中無法識別。 所以,我想知道是否有人可以向我解釋如果可能的話,需要做些什么來使魔術發生。 :)

謝謝。

是的,只要具有變量聲明的文件包含在使用它的文件之前,因為它在同一個塊中按順序解析。

但這是一種非常糟糕的做法。

這是可能的,因為myVariable將被定義為@ global scope,盡管它位於不同的文件中。 但是,確保在定義變量后調用printMyVariable函數(就包含腳本標記而言)。

簡單

JS具有平坦的范圍,僅有全局1和本地。 var使用當前范圍。 var foo在全局范圍內 - 您將從任何文件(沒有名稱空間或模塊)獲得全局變量。

進一步

有一個Global對象,全局var成為它的屬性。 在瀏覽器環境window實現Global ,因此您的全局var將具有限定名稱window.foo

“重新聲明”

/* 
assuming browser environment
execution flow: top to bottom 
first file: (actually doesnt matter, becase its flat)
*/
var foo = "bar";
// equivalent to 
window.foo = "bar";

// second file:
var foo = 42;
// redeclared? no, because equivalent statement is
window.foo = 42;

只有1個說明的目的,請參閱第二部分。

只要在包含第一個文件后在第二個文件中調用該函數,就應該沒問題。 您引入了一個全局變量,該變量分配給DOM中的window對象,因此在包含第一個文件后, window.myVariable將等於"Awesome variable" 如上所述,所有這些都是一個非常糟糕的主意。

作為一個古老的perlie,我永遠不會使用以'my'開頭的變量作為全局變量 - 我的= perl in local :-)我同意這是不好的做法。

想到這個的方式不是單獨的文件,而是作為JavaScript文件的一個大文件按順序連接。 范圍與該文件中的范圍相同。 實際上,這正是當你縮小時發生的事情......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM