const囱桨、let與var的區(qū)別

1、var嗅绰。var聲明的變量沒有塊級作用域舍肠,而且存在變量名提升的情況搀继。這里舉例說明。

<script>
    var num = 123;
    function foo(){
        console.log(num);  // undefined
        var num = 46;
        console.log(num) // 46
    }
    foo()
</script>

為什么第一個(gè)輸出值會(huì)是undefined翠语,而不是123呢叽躯?因?yàn)檫@里存在著變量名的提升,其實(shí)上述語句相當(dāng)于:

<script>
    var num = 123;
    function foo(){
        var num;
    console.log(num);  // undefined
    num = 46;
    console.log(num) // 46
    }
    foo()
</script>

上面主要體現(xiàn)了var存在著變量名的提升肌括,那么它沒有塊級作用域又是怎么體現(xiàn)的呢点骑?最常見的是在條件語句里面,如if語句谍夭、for語句黑滴。這里以if語句為例。

<script>
    var num = 123;
    if(true){
        console.log(num) // 123
       var num = 456;
        console.log(num)  // 456
    }
    console.log(num)  // 456
</script>

這里為什么第一個(gè)輸出值不是undefined紧索,第三個(gè)輸出值不是123呢袁辈?原因是這樣的,因?yàn)関ar不存在塊級作用域珠漂,且變量名會(huì)提升晚缩,所以上述代碼其實(shí)相當(dāng)于:

<script>
    var num;
    num = 123
    if(true){
      console.log(num) // 123
      num = 456;
      console.log(num)  // 456
    }
    console.log(num)  // 456
</script>

所以在我看來,var其實(shí)是有利有弊的媳危,利就是不用去管什么常量與變量的荞彼,直接使用var就行,弊就是不存在塊級作用域且變量名會(huì)提升待笑,這會(huì)在無形之中給我們帶來許多意想不到的問題

2卿泽、const(es6中用來定義常量的一個(gè)關(guān)鍵字(當(dāng)然了,其他語言里也存在著const滋觉,這里僅指在js中)。常用來聲明常量齐邦,且常量不可修改椎侠,必須初始化,存在著塊級作用域措拇。

(1)不存在名稱提升問題我纪。以代碼說事兒。

<script>
    function foo(){
    console.log(num); 
    const num = 456;
    console.log(num)
    }
    foo()
</script>

運(yùn)行上述代碼會(huì)發(fā)現(xiàn)會(huì)報(bào)錯(cuò) Uncaught ReferenceError: num is not defined 丐吓。這里說明浅悉,使用const來定義的常量名并沒有提升。

(2)聲明時(shí)必須初始化券犁。假如用const聲明的常量并沒有初始化呢术健?會(huì)有問題嗎?直接上代碼

<script>
    const num;
    console.log(num)
</script>

這里運(yùn)行后發(fā)現(xiàn)會(huì)報(bào)錯(cuò)粘衬。 Uncaught SyntaxError: Missing initializer in const declaration 意思是:語法錯(cuò)誤荞估,在const聲明中沒有初始化咳促。

同樣的代碼,只是const聲明初始化勘伺,結(jié)果會(huì)不會(huì)有變化呢跪腹?答案是不言而喻的了。

(3)存在著塊級作用域飞醉。什么叫塊級作用域呢冲茸?上代碼:

<script>
    const num = 456
    if(true){
        const num = 789;
        console.log(num); // 789
    }
    console.log(num) // 456
</script>

可見在if語句內(nèi)聲明的常量在if語句外并不能訪問到,這里與var不同缅帘。這里是以if語句為例的轴术,當(dāng)然在for語句亦或是函數(shù)內(nèi)都是這樣的,存在著塊級作用域

3股毫、let(es6中用來定義變量的一個(gè)關(guān)鍵字)膳音。let定義的變量存在著塊級作用域,在函數(shù)內(nèi)定義的變量铃诬,對函數(shù)外部無影響祭陷。

(1)在函數(shù)內(nèi)部定義的變量,對函數(shù)外部無影響趣席,即存在著塊級作用域兵志。

<script>
    let num = 789;
    function foo(){
        let num = 46;
    console.log(num) // 46
    }
    foo()
    console.log(num) // 789
</script>

(2)不存在著變量名的提升。

<script>
    function foo(){
    console.log(num); // Uncaught ReferenceError: num is not defined
    let num = 46;
    console.log(num)
    }
    foo()
</script>

運(yùn)行后發(fā)現(xiàn)會(huì)報(bào)錯(cuò)宣肚,可見使用let聲明的變量想罕,并不像var那樣存在著變量名的提升問題。

作者:江峰★
出處:http://www.cnblogs.com/jf-67/
本文版權(quán)歸作者和博客園共有霉涨,歡迎轉(zhuǎn)載按价,但未經(jīng)作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文鏈接笙瑟,否則保留追究法律責(zé)任的權(quán)利

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末楼镐,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子往枷,更是在濱河造成了極大的恐慌框产,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,427評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件错洁,死亡現(xiàn)場離奇詭異秉宿,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)屯碴,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評論 3 395
  • 文/潘曉璐 我一進(jìn)店門描睦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人窿锉,你說我怎么就攤上這事酌摇∠ゾ耍” “怎么了?”我有些...
    開封第一講書人閱讀 165,747評論 0 356
  • 文/不壞的土叔 我叫張陵窑多,是天一觀的道長仍稀。 經(jīng)常有香客問我,道長埂息,這世上最難降的妖魔是什么技潘? 我笑而不...
    開封第一講書人閱讀 58,939評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮千康,結(jié)果婚禮上享幽,老公的妹妹穿的比我還像新娘。我一直安慰自己拾弃,他們只是感情好值桩,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著豪椿,像睡著了一般奔坟。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上搭盾,一...
    開封第一講書人閱讀 51,737評論 1 305
  • 那天咳秉,我揣著相機(jī)與錄音,去河邊找鬼鸯隅。 笑死澜建,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蝌以。 我是一名探鬼主播炕舵,決...
    沈念sama閱讀 40,448評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼跟畅!你這毒婦竟也來了幕侠?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,352評論 0 276
  • 序言:老撾萬榮一對情侶失蹤碍彭,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后悼潭,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體庇忌,經(jīng)...
    沈念sama閱讀 45,834評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評論 3 338
  • 正文 我和宋清朗相戀三年舰褪,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了皆疹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,133評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡占拍,死狀恐怖略就,靈堂內(nèi)的尸體忽然破棺而出捎迫,到底是詐尸還是另有隱情,我是刑警寧澤表牢,帶...
    沈念sama閱讀 35,815評論 5 346
  • 正文 年R本政府宣布窄绒,位于F島的核電站,受9級特大地震影響崔兴,放射性物質(zhì)發(fā)生泄漏彰导。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評論 3 331
  • 文/蒙蒙 一敲茄、第九天 我趴在偏房一處隱蔽的房頂上張望位谋。 院中可真熱鬧,春花似錦堰燎、人聲如沸掏父。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,022評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赊淑。三九已至,卻和暖如春鸟款,著一層夾襖步出監(jiān)牢的瞬間膏燃,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,147評論 1 272
  • 我被黑心中介騙來泰國打工何什, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留组哩,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,398評論 3 373
  • 正文 我出身青樓处渣,卻偏偏與公主長得像伶贰,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子罐栈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評論 2 355

推薦閱讀更多精彩內(nèi)容