2013-03-08 187 views
2

JavaScript中有一件事我無法理解。Javascript變量初始化

當我們聲明一個變量是這樣的:

var var_Name 

局部變量

當我們聲明一個變量是這樣的:

var_Name 

全局變量

何時瀏覽器重置其值?一旦頁面刷新?

我的意思是,當頁面加載時,我聲明一個變量,並在那個時候增加它的值。當這個值要回到它的初始化初始值時?當我刷新頁面?或者如果它是一個本地變量它停止使用後馬上刷新,如果它是全局變量它只刷新頁面時刷新?

謝謝!

+0

我相信頁面加載不會影響變量 – Jacob 2013-03-08 14:45:33

+1

@Jacob:這是不正確的。請參閱 – Dancrumb 2013-03-08 14:47:04

+1

全球範圍內的答案僅表示其可用於所有文件和功能,本地僅限於聲明的位置。變量只是保存你給它的數據,它們不會像會話或持久數據那樣工作,所以在重新加載之後它們將會消失,直到給出一些數據以保存新實例 – ashley 2013-03-08 14:48:21

回答

3

全局聲明:

var_Name = 1; 
// is equal to 
var var_Name = 1; 
// and is also equal to 
window.var_Name = 1; 

變量住,只要窗口對象一樣。 所以它將可用,直到你離開/重新加載當前頁面。

函數內部的局部變量,只要功能正在運行的生活:

function y(){ 
var x = 1; 
console.log(typeof x !== 'undefined'); 
} 
y(); 
console.log(typeof x === 'undefined'); 
+0

謝謝!這個例子是完美的,因爲我在C#,Java,VB.NET編程,所以我明白你想說什麼。 謝謝! – kfirba 2013-03-08 14:47:18

3

全局變量可以從頁面加載的任何文件中的任何函數訪問。 並且當頁面重新加載變量時將被取消設置,直到某些代碼再次運行併爲其賦值。

2

JavaScript引擎不會在頁面加載維護任何變量值。因此,當頁面重新加載時,在頁面生命週期中聲明和定義的全局變量將會丟失。

var聲明的變量僅限於它們的定義範圍。對於瀏覽器,只有函數範圍和全局範圍。因此,函數中聲明的局部變量在函數返回後將不再存在,除非它被閉包(一個值得在Internet上搜索的大型主題)捕獲。

沒有指向變量'刷新'到他們最初分配的值,沒有程序的明確行爲。他們要麼在範圍內,要麼在範圍之外,在範圍之內,他們擁有最後分配給他們的任何價值。

值得一提的是執行以下功能之外:

var foo = 1; 

仍然會創建一個全局變量,因爲你是在全球範圍內,如果你在一個函數的範圍不是。

+0

感謝您的銳利解釋! – kfirba 2013-03-08 14:50:59

0

全局變量在所有文檔中都可見。局部變量只在您定義的塊中可見。變量在其他文檔中不可見。

刷新頁面時,所有變量都是新設置的,這意味着在保存它之前(例如在cookie中或通過ajax),您將不會獲得任何變量的值。