国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

簡述ES6新增關(guān)鍵字let與var的區(qū)別

2024-05-06 15:35:34
字體:
供稿:網(wǎng)友

最近看了很多文章,偶然間看到ES6中新增了一個關(guān)鍵字 let ,它具有與 var 關(guān)鍵字相似的功能。一開始使用它時,發(fā)現(xiàn)它讓我對之前一些習(xí)以為常的東西產(chǎn)生了懷疑。

下面先讓我們看看它和 var 之間用法的不同

 {   var a = 10;   let b = 8; }  a //10   b // Referenceerror :b is not defined

上面在代碼塊中聲明了兩個變量并分別賦值輸出到控制臺,結(jié)果a的變量成功輸出,b的輸出結(jié)果產(chǎn)生了報錯。可見,let聲明的變量只在它所在的代碼塊中產(chǎn)生作用。同時,我們也能想到它最好的使用方法就是在for循環(huán)中使用。

下面我們再舉個例子來觀察它與 var 之間的區(qū)別:

 var a = [ ]  for(var i = 0;i<6; i++){    a[i] = function(){      console.log(i);    }  }  console.log("i的值:",i);  a[ 4 ]( );

  它的輸出結(jié)果為:

    i 的值:6

    6

  為什么是 6 呢?一開始我也被嚇懵逼了,這有悖于我的常識,以往沒注意到的地方,居然這么的low。在我的意識里結(jié)果應(yīng)該 4,而不是 6 。我想了很久也想不明白,以我這種小白的技術(shù),自然是很難搞懂這種資深技術(shù)宅的問題。所以,我查了很多資料來解決這個問題,才搞明白。

  在for里用 var 聲明的 i 是全局變量,在循環(huán)外部也可以訪問到,在循環(huán)體內(nèi)每次循環(huán)都給 i 重新賦一次值,而 i 卻是屬于全局的,外部的 i 值最終是 6 ,數(shù)組 a[ ]指向的 i 始終都是同一個 i,當(dāng)循環(huán)結(jié)束時 a [ ] 函數(shù)內(nèi)部的 i 就是最終 i 的結(jié)果  6。

  如果使用let,聲明的變量只在當(dāng)前代碼塊中起作用

  var a = [ ]  for(let i = 0;i<6; i++){    a[i] = function(){      console.log(i);    }  }  console.log("i的值:",i);  a[ 4 ]( );

 它的輸出結(jié)果為:

     i 的值:6
    5

  上面代碼中,變量i是let聲明的,當(dāng)前的i只在本輪循環(huán)有效,所以每一次循環(huán)的i其實都是一個新的變量,所以最后輸出的是5。你可能會問,如果每一輪循環(huán)的變量i都是重新聲明的,那它怎么知道上一輪循環(huán)的值,從而計算出本輪循環(huán)的值?這是因為 JavaScript 引擎內(nèi)部會記住上一輪循環(huán)的值,初始化本輪的變量i時,就在上一輪循環(huán)的基礎(chǔ)上進(jìn)行計算。

總結(jié)

以上所述是小編給大家介紹的ES6新增關(guān)鍵字let與var的區(qū)別,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對錯新站長站網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 宾阳县| 简阳市| 乌兰县| 湘阴县| 循化| 汪清县| 金坛市| 清河县| 安国市| 稻城县| 温州市| 来凤县| 玉门市| 军事| 莲花县| 遂川县| 郁南县| 达尔| 重庆市| 布尔津县| 苍梧县| 抚宁县| 佛坪县| 蕲春县| 周至县| 沂源县| 三原县| 靖远县| 遂川县| 阜南县| 马尔康县| 邳州市| 南陵县| 辽源市| 包头市| 武乡县| 政和县| 宝兴县| 化德县| 化德县| 大埔区|