最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

ECMAScript中var let const常見問題及區(qū)別詳解

 更新時間:2023年02月02日 16:25:48   作者:肥晨  
這篇文章主要為大家介紹了ECMAScript中var let const常見問題及區(qū)別詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

引言

在ECMAScript中,有3個關(guān)鍵字可以用于聲明變量。分別是:var、let和const。其中,var在所有ECMAScript都是可以使用的,但是let和const需要在ECMAScript6及其以上版本才可以使用。

let和const的行為基本一致,但是其中有一個比較重要的一個區(qū)別,就是const用它聲明變量時必須同時初始化變量,且嘗試修改const聲明的變量會導(dǎo)致運行錯誤。所以常有人直接理解為const用于聲明常量。

一:作用域

var是函數(shù)作用域。

let和const是塊級作用域。

也就是說var聲明的變量出函數(shù)時就會被銷毀,而let和const聲明的變量出塊級內(nèi)部就會被銷毀。

下面使用for舉例:

for中的變量聲明,也是var和let的區(qū)別之一。

 for (var i = 0; i < 5; i++) {
            setTimeout(() => {
                console.log(i);
            }, 0);
        } //5 5 5 5 5
        for (var i = 0; i < 5; i++) {
            setTimeout(() => {
                console.log(i);
            }, 0);
        } //0 1 2 3 4

 造成這種現(xiàn)象的原因就是:var可以滲透到循環(huán)體外部,在退出循環(huán)的時候,迭代變量保存的是導(dǎo)致循環(huán)退出的值。而let的是因為作用域反限于for循環(huán)塊的內(nèi)部,迭代循環(huán)聲明一個新的變量,每個setTimeout引用的都是不同的變量實例。

二:優(yōu)先級

三個關(guān)鍵字之間沒有優(yōu)先級,按照聲明順序。

三:全局聲明區(qū)別

let和var的不同是,let不會成為window對象的屬性。

        var name = "Matt".
        console.log(window.name); //Matt
        let name = "Matt"
        console.log(window.name);//undefined

四:變量提升

這也就是let和var的一個重要的區(qū)別,就是let聲明的變量不會在作用域中被提升。

        console.log(name); //undefined
        var name = "Matt";
        console.log(name); //ReferenceError: name is not defined
        let name = "Matt"

 在代碼解析時,JavaScript引擎也會注意到后面的let(也就是常談到的“類似提升行為”),只不過在此之前不能操作這個被聲明的變量,不然就會送給你漂亮的紅色ReferenceError。而這個瞬間也被稱之為“暫時性死區(qū)”。也算是在某些方面限制了代碼的規(guī)范度吧。

其他:

1.在ES6中明確規(guī)定,在{}中出現(xiàn)let和const,就會被限制在里面(也就是塊級作用域)。

2.函數(shù)提升優(yōu)先級大于var的變量提升(還是不要重名比較好,你想想要是你們部門有人和你重名重姓會多麻煩)。

以上就是ECMAScript中var let const常見問題及區(qū)別詳解的詳細內(nèi)容,更多關(guān)于ECMAScript中var let const區(qū)別的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評論

凤庆县| 东宁县| 涞水县| 东莞市| 马龙县| 德钦县| 子长县| 加查县| 宜良县| 绵阳市| 荥阳市| 德州市| 仙居县| 馆陶县| 阿克陶县| 屏东县| 盐池县| 镇安县| 旺苍县| 绥棱县| 台北市| 浠水县| 嵊泗县| 阜平县| 施秉县| 梁山县| 淄博市| 饶阳县| 库尔勒市| 安塞县| 遵义市| 南安市| 阿鲁科尔沁旗| 且末县| 玛纳斯县| 库尔勒市| 措美县| 龙江县| 察雅县| 嘉善县| 安宁市|