JS 的變量是松散類(lèi)型的(可以用來(lái)保存任何類(lèi)型的數(shù)據(jù))
每個(gè)變量?jī)H僅是一個(gè)用于保存值的占位符
定義變量:var 變量名
;
eg:var message;
(定義一個(gè)名為 message 的變量,該變量可以用來(lái)保存任何值。像這樣未初始化的變量,會(huì)保存一個(gè)特殊的值undefined
)
用var
定義的變量將成為定義該變量的作用域中的局部變量
如果在函數(shù)中用var
定義一個(gè)變量,那么這個(gè)變量在函數(shù)執(zhí)行完成后就會(huì)被銷(xiāo)毀(參考作用域)
省略var
操作符,從而可以創(chuàng)建一個(gè)全局變量
function test(){ var message="hi";//局部變量}test();alert(message);//錯(cuò)誤!/*變量 message 是在函數(shù)中使用 var 定義的。當(dāng)函數(shù)被調(diào)用時(shí),就會(huì)創(chuàng)建該變量并為其賦值。而函數(shù)執(zhí)行結(jié)束后,這個(gè)變量會(huì)隨著函數(shù)的執(zhí)行AO的銷(xiāo)毀而被刪除,因此函數(shù)執(zhí)行完成后再輸出這個(gè)變量就會(huì)導(dǎo)致錯(cuò)誤 --> 參考作用域章節(jié)*/
function test(){ message="hi";//全局變量}test();alert(message);//"hi"/* 省略了 var 操作符,因而 message 就成了全局變量。調(diào)用一次 test() 函數(shù)后,這個(gè)變量就有了定義,之后就可以在函數(shù)外部的任何地方被訪(fǎng)問(wèn)到 */
定義:在函數(shù)外聲明的變量都為全局變量,在函數(shù)內(nèi)聲明的為局部變量
局部變量和全局變量重名會(huì)覆蓋全局變量
var a = 1;function test1() { var a;//局部變量與全局變量重名時(shí)會(huì)覆蓋全局變量,此時(shí)的a只有聲明卻未定義 console.log(a);//所以輸出值為 undefined a = 2; console.log(a); // 2}test1();console.log(a);// 1
由于 var
和 let
申明的是變量,如果要申明一個(gè)常量,在ES6之前是不行的,我們通常用全部大寫(xiě)的變量來(lái)表示“這是一個(gè)常量,不要修改它的值”:var PI = 3.14;
ES6 標(biāo)準(zhǔn)引入了新的關(guān)鍵字const
來(lái)定義常量,const 與 let 都具有塊級(jí)作用域:const PI = 3.14;
聯(lián)系客服