3 回答

TA貢獻1789條經驗 獲得超8個贊
只需在函數范圍之外的global.js中定義變量:
// global.js
var global1 = "I'm a global!";
var global2 = "So am I!";
// other js-file
function testGlobal () {
alert(global1);
}
為確保此方法有效,您必須先包含/鏈接到global.js,然后再嘗試訪問該文件中定義的任何變量:
<html>
<head>
<!-- Include global.js first -->
<script src="/YOUR_PATH/global.js" type="text/javascript"></script>
<!-- Now we can reference variables, objects, functions etc.
defined in global.js -->
<script src="/YOUR_PATH/otherJsFile.js" type="text/javascript"></script>
</head>
[...]
</html>
當然,如果您不想讓js文件的加載中斷初始頁面加載,則可以在結束<body> -tag之前的腳本標簽中進行鏈接。

TA貢獻2016條經驗 獲得超9個贊
推薦的方法是:
window.greeting = "Hello World!"
然后,您可以在任何函數中訪問它:
function foo() {
alert(greeting); // Hello World!
alert(window["greeting"]); // Hello World!
alert(window.greeting); // Hello World! (recommended)
}
首選此方法有兩個原因。
目的是明確的。var關鍵字的使用很容易導致聲明全局變量vars,而全局變量原本是本地變量,反之亦然。對于許多Javascript開發人員來說,這種變量作用域是一個混淆點。因此,作為一般規則,我確保所有變量聲明都以關鍵字var或prefix開頭window。
您還可以標準化語法以這種方式讀取變量,這意味著局部作用域var不會破壞全局變量,var反之亦然。例如,這里發生的事情是模棱兩可的:
greeting = "Aloha";
function foo() {
greeting = "Hello"; // overrides global!
}
function bar(greeting) {
alert(greeting);
}
foo();
bar("Howdy"); // does it alert "Hello" or "Howdy" ?
但是,這更加簡潔,而且不易出錯(您實際上不需要記住所有變量作用域規則):
function foo() {
window.greeting = "Hello";
}
function bar(greeting) {
alert(greeting);
}
foo();
bar("Howdy"); // alerts "Howdy"

TA貢獻1818條經驗 獲得超7個贊
你試過了嗎?
如果您這樣做:
var HI = 'Hello World';
在中global.js。然后執行:
alert(HI);
在js1.js它會很好。您只需要global.js在HTML文檔的其余部分之前添加。
唯一的問題是您必須在窗口范圍內(而不是在任何函數內)聲明它。
您可以修改var零件并以這種方式創建它們,但這不是一個好習慣。
添加回答
舉報