我需要在哪裏放置一段JavaScript代碼,用於初始化一個變量,該變量必須對使用該頁面執行的所有代碼都可見? (例如,元素上的事件處理程序需要訪問這個變量)。我在哪裏可以在網頁中聲明全局JavaScript變量?
回答
您可以不使用任何函數,也可以在不使用'var'關鍵字的情況下執行函數。在任何其他腳本(可能位於頁面的頂部)之前分配它,以便腳本可以讀取該值。
您也可以將它放在一個包含的JS文件中,但將它放在頁面上通常更具有可用性,因爲您可以輕鬆地看到全局值,並且可以通過服務器端代碼修改每個頁面的值。同時儘量避免在正文中分配全局變量,它可能會讓人產生困惑,並且很難閱讀。
<head>
<script>
var numberOfDucks = 1000; // Global
function some_function() {
// numberOfDucks is accessible here
alert (numberOfDucks);
// until you mask it by defining a local variable using the 'var' keyword
var myLocal = 0; // is a local
anotherGlobal = 0; // is a global
}
</script>
<script>
// potentially some other script
</script>
<script src="even_more_script.js">
</head>
在函數中定義一個全局(隱含全局)不是一個好主意,因爲它會引起很多爭議。
<head>
<script>
var b = 0;
</script>
<script src="...">
</head>
<body>
...
</body>
聲明變量與任何你的函數,這樣它就成爲一個全局變量。
下面是一個全局變量的例子。第一個函數使用全局函數,但第二個函數使用同名的局部變量來掩蓋全局。
var globalVar = 1;
function testFunc1() {
globalVar = 2; //Updates the global variable
}
function testFunc2() {
var globalVar = 5; // This variable masks the global and only updates within the scope of this function
globalVar = 3;
}
此外,您提到該代碼段必須在任何其他引用之前初始化全局。爲此,我建議您在您的元素中儘可能使用其他JavaScript引用之前,將腳本塊或引用放置到您的JavaScript文件中。如果您有其他JavaScript文件將依賴於全局變量,那麼您可能希望確保在頁面的其餘部分先使用defer屬性加載之前不加載它們。請參閱以下內容:
<script src="dependant.js" type="text/javascript" defer="defer"></script>
另一種方法是在初始腳本加載後動態添加從屬腳本。可以按如下方式做到這一點使用一些像jQuery:
$(window).load(function() {
$.getScript('dependant.js');
});
的只辦法沒有一個全局變量是使用關鍵字var
的功能範圍。其他任何東西都是全局變量。
(function() {
var local = 5;
})();
如果函數是文字或函數定義不要緊,它有是某種類型的函數。
全局變量的例子:
:
var global = 5;
以上是不在函數範圍,因而即使使用var
全球。
2。
(function() {
global = 5;
})();
在上述中,沒有var
被使用,所以它成爲一個隱含的全球性的。
3.
function foo(){}
foo
沒有另一個函數的內部定義或分配到一個對象鍵,以便它的全球可訪問的。
4.
(function() {
var local = global = 5;
})();
當var
做多的任務,只有第一個變量變成本地...所以global
是一個全局變量,相當於5
5.
window.foo = 5;
前綴window.
是在瀏覽器上下文中定義全局變量的顯式方式。
6.
this.x = 5;
默認情況下在瀏覽器中,this
點存在domWindow,除非你是在附加到一個對象,它是不是window
的方法。這與#5是一樣的。請注意,如果您使用XMLHttpRequest之類的方法,則上下文就是窗口。
7.
with (window) { name = 'john'; }
如果使用with
聲明,你不引用已具有屬性的對象,有一個全局變量定義。一般來說,最好避免使用with
關鍵字。
結論:
就個人而言,我會保持我的代碼在匿名函數的範圍,並且只當我需要顯式聲明的全局變量。
(function() {
var governor = 'Schwarzenegger',
state = 'California';
window.president = 'Obama';
})();
在上面的,我定義governor
和state
變量,他們是當地到我的功能。我想明確定義president
作爲全局變量。這樣,我不會對我定義爲全局變量的變量感到困惑,因爲我明確地以window.
爲前綴。
你可以變量放置在頁面的開始(在全球範圍內,如果你要讓它隨處可見),但我建議兩件事
1),因爲你要打開一個腳本塊,避免因爲腳本阻止了渲染,所以在頁面內部聲明它。所以就把它只是</head>
2)避免之前創建一個簡單的變種,但使用一個命名空間代替你減少標識符碰撞
<script>
var YOUR_APP_NS = {};
YOUR_APP_NS.yourvar = ....
</script>
這是一個很好的做法,以風險爲不污染全局範圍。如果你需要一些公共變種通過這種方式,你可以只寫
YOUR_APP_NS.yourvar1 = ....
YOUR_APP_NS.yourvar2 = ....
YOUR_APP_NS.yourvarN = ....
但全局變量仍然是1
- 1. 我應該在哪裏聲明Sugarcrm中的全局變量
- 2. 我必須在哪裏聲明我的全局變量?
- 3. 在PHP中,全局聲明的變量存儲在哪裏?
- 4. 在Code Igniter中,我應該在哪裏聲明我的全局變量?
- 5. 在哪裏聲明全局變量?在.h or.m?
- 6. 我們可以在QML文件中聲明全局變量嗎?
- 7. JavaScript;我如何聲明變量全局?
- 8. 全局常量是否可以在JavaScript中聲明?
- 9. 在Arduino中聲明全局變量
- 10. 在perl中聲明全局變量
- 11. 在ActionScript中聲明全局變量?
- 12. 在Matlab中聲明全局變量
- 13. 在coffescript中聲明全局變量
- 14. 在yacc中聲明全局變量
- 15. 全局變量在android中的聲明
- 16. 在Java中聲明全局變量
- 17. 在全局變量中聲明查詢
- 18. 在Python中聲明全局變量類
- 19. 在Swift中聲明全局變量
- 20. 在vb中聲明全局變量
- 21. 我在哪裏可以合法地在C99中聲明一個變量?
- 22. 哪一個更好,在類中聲明全局變量或在Java類中聲明局部變量?
- 23. 聲明的全局變量在功能裏面沒有改變
- 24. 在哪裏可以定義ASP.NET項目中的JavaScript全局變量
- 25. drupal -----這些變量在哪裏聲明?
- 26. 在哪裏聲明對象變量
- 27. 聲明全局變量
- 28. 全局變量聲明
- 29. 我可以在for循環中聲明局部變量嗎?
- 30. 在Javascript中,我可以在聲明之前使用變量嗎?