JavaScript中有一件事我無法理解。Javascript變量初始化
當我們聲明一個變量是這樣的:
var var_Name
叫局部變量。
當我們聲明一個變量是這樣的:
var_Name
叫全局變量。
何時瀏覽器重置其值?一旦頁面刷新?
我的意思是,當頁面加載時,我聲明一個變量,並在那個時候增加它的值。當這個值要回到它的初始化初始值時?當我刷新頁面?或者如果它是一個本地變量它停止使用後馬上刷新,如果它是全局變量它只刷新頁面時刷新?
謝謝!
JavaScript中有一件事我無法理解。Javascript變量初始化
當我們聲明一個變量是這樣的:
var var_Name
叫局部變量。
當我們聲明一個變量是這樣的:
var_Name
叫全局變量。
何時瀏覽器重置其值?一旦頁面刷新?
我的意思是,當頁面加載時,我聲明一個變量,並在那個時候增加它的值。當這個值要回到它的初始化初始值時?當我刷新頁面?或者如果它是一個本地變量它停止使用後馬上刷新,如果它是全局變量它只刷新頁面時刷新?
謝謝!
全局聲明:
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');
謝謝!這個例子是完美的,因爲我在C#,Java,VB.NET編程,所以我明白你想說什麼。 謝謝! – kfirba 2013-03-08 14:47:18
全局變量可以從頁面加載的任何文件中的任何函數訪問。 並且當頁面重新加載變量時將被取消設置,直到某些代碼再次運行併爲其賦值。
JavaScript引擎不會在頁面加載維護任何變量值。因此,當頁面重新加載時,在頁面生命週期中聲明和定義的全局變量將會丟失。
用var
聲明的變量僅限於它們的定義範圍。對於瀏覽器,只有函數範圍和全局範圍。因此,函數中聲明的局部變量在函數返回後將不再存在,除非它被閉包(一個值得在Internet上搜索的大型主題)捕獲。
沒有指向變量'刷新'到他們最初分配的值,沒有程序的明確行爲。他們要麼在範圍內,要麼在範圍之外,在範圍之內,他們擁有最後分配給他們的任何價值。
值得一提的是執行以下功能之外:
var foo = 1;
仍然會創建一個全局變量,因爲你是在全球範圍內,如果你在一個函數的範圍不是。
感謝您的銳利解釋! – kfirba 2013-03-08 14:50:59
全局變量在所有文檔中都可見。局部變量只在您定義的塊中可見。變量在其他文檔中不可見。
刷新頁面時,所有變量都是新設置的,這意味着在保存它之前(例如在cookie中或通過ajax),您將不會獲得任何變量的值。
我相信頁面加載不會影響變量 – Jacob 2013-03-08 14:45:33
@Jacob:這是不正確的。請參閱 – Dancrumb 2013-03-08 14:47:04
全球範圍內的答案僅表示其可用於所有文件和功能,本地僅限於聲明的位置。變量只是保存你給它的數據,它們不會像會話或持久數據那樣工作,所以在重新加載之後它們將會消失,直到給出一些數據以保存新實例 – ashley 2013-03-08 14:48:21