成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

ES6新特性--var、let、const

qingshanli1988 / 733人閱讀

摘要:不存在塊級作用域,具有變量提升機(jī)制。在同一作用域內(nèi)只能聲明一次。注意其針對的是和所在的塊級作用域。在編程過程中如果需要變量提升則使用聲明變量,否則采用和聲明變量,以便更好地控制作用域,避免變量的混用不可控。

1、 var、let、const

var不存在塊級作用域,具有變量提升機(jī)制。
let和const存在塊級作用域,不存在變量提升。在同一作用域內(nèi)只能聲明一次。
## var的說明 ##
function a(flag){
    if(flag){
        console.log(value);      //結(jié)果為undefined,已聲明但未初始化
        var value=1;
        return value;
    }else{
        console.log(value);      //仍舊可以訪問到value;值為undefined
    }
}
//上述代碼等價(jià)于
function a(flag){
    var value;
    if(flag){
        value=1;
        return value;
    }else{
        console.log(value);      //仍舊可以訪問到value;值為undefined
    }
}
## let說明 ##
function a(flag){
    if(flag){
        console.log(value);       // 報(bào)錯(cuò),因?yàn)関alue此時(shí)位于TDZ(后面講)內(nèi),無法訪問
        let value=1;
        return value;
    }else{
        console.log(value);      //value is not defined
    }
}
## const說明 ##
function a(flag){
    if(flag){
        console.log(value);       // 報(bào)錯(cuò),因?yàn)関alue此時(shí)位于TDZ(后面講)內(nèi),無法訪問
        const value=1;        //const必須在聲明的時(shí)候初始化,并且其值無法被重新賦值
        return value;
    }else{
        console.log(value);      //value is not defined
    }
}

2、const在聲明時(shí)需要賦值且無法修改,但如果常量是對象,則對象的屬性可以修改

const obj={
    name:"Alisa",
    age:25
}
obj=23;        //報(bào)錯(cuò)
obj.age=23;    //允許修改

3、TDZ暫存性死區(qū)
JavaScript引擎在掃描代碼發(fā)現(xiàn)變量聲明時(shí),如果是使用var聲明的變量,則講變量提升至作用域頂部;如果是采用let和const聲明的變量,則將其放到TDZ中。訪問TDZ中的變量會觸發(fā)運(yùn)行時(shí)錯(cuò)誤,只有執(zhí)行過變量聲明語句后,變量才會從TDZ中移出,然后才可以正常訪問。注意:其針對的是let和const所在的塊級作用域。

if(flag){
    console.log(typeof value);     //引用錯(cuò)誤
    let value="time";
}

console.log(typeof value);         //undefined
if(flag){
    console.log(typeof value);     //引用錯(cuò)誤
    let value="time";
}

4、let、const在循環(huán)中的應(yīng)用

//輸出0-9
var funcs=[];
for(let i=0;i<10;i++){
    funcs.push(function(){
        console.log(i);
    })
}
funcs.forEach(function(func){
    func();        //輸出0-9
})
//將上面的let變?yōu)閏onst則會報(bào)錯(cuò),因?yàn)閕++操作試圖修改const聲明的常量
//遍歷對象
var person={
    name:"Alisa",
    age:23
};
for(let key in person){
    console.log(key);    //輸出name、age
}
//將上面的let換位const不會報(bào)錯(cuò),因?yàn)槊看蝛ey的值并不相同,即每次定義一個(gè)新的變量

5、var可能修改全局屬性(如瀏覽器環(huán)境下的window對象的屬性),而let和const不會修改只是遮蔽

var RegExp="hello";
console.log(window.RegExp);       //"hello"
var say="hi";
console.log(window.say);          //"hi"

let RegExp="hello";
console.log(RegExp);       //"hello"
console.log(window.RegExp === RegExp);       //false

const say="hi";
console.log(say);          //"hi"
console.log(window.say);          //undefined

6、實(shí)際應(yīng)用時(shí)的tips
使用塊級綁定時(shí):聲明變量默認(rèn)采用const,只有確實(shí)需要改變變量時(shí)才使用let。
在編程過程中如果需要變量提升則使用var聲明變量,否則采用let和const聲明變量,以便更好地控制作用域,避免變量的混用、不可控。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/104200.html

相關(guān)文章

  • 你需要了解的ES6特性(前沿技術(shù))

    摘要:年月,的創(chuàng)造者公司,決定將提交給國際標(biāo)準(zhǔn)化組織,希望這種語言能夠成為國際標(biāo)準(zhǔn)。這表示外層代碼塊不受內(nèi)層代碼塊的影響。也可以運(yùn)用于函數(shù)及其他文中就簡單介紹這么多,想更加了解新特性的可以自尋查看一下阮一峰的一本入門 ES6新特性 最近在項(xiàng)目中遇到了很多ES6的語法,遇到了不少坑坑洼洼,因此,在這里就簡單介紹一下ES6中的一些新特性 如果想真正的了解ES6和ES5有什么不同,這里推薦看一下...

    Nino 評論0 收藏0
  • ES6特性總結(jié) 一

    摘要:一旦聲明,常量的值不能被改變。頂層對象的屬性頂層對象,瀏覽器中指的是對象,在中指的是對象。中新增了兩個(gè)命令和,命令用于暴露出模塊對外的接口,而則用于輸入某一模塊。 1.聲明變量的關(guān)鍵字:const 和 let JavaScript ES6中引入了另外兩個(gè)聲明變量的關(guān)鍵字:const和let。在ES6中,我們將很少能看到var了。 const關(guān)鍵字 const聲明一個(gè)只讀的常量。一旦聲明...

    MarvinZhang 評論0 收藏0
  • ES6常用特性——讀《Understanding ECMAScript 6》總結(jié)

    摘要:對象解構(gòu)對象解構(gòu)語法在賦值語句的左側(cè)使用了對象字面量,例如代碼中,的值被存儲到本地變量中,的值則存儲到變量中。當(dāng)使用解構(gòu)賦值語句時(shí),如果所指定的本地變量在對象中沒有找到同名屬性,那么該變量會被賦值為。 現(xiàn)在ES6在很多項(xiàng)目中大量使用。最近我也花時(shí)間看了一下《Understanding ECMAScript6》的中文電子書。在這里總結(jié)了一些在實(shí)際開發(fā)中常用的新特性。 塊級作用域 在ES6...

    jsliang 評論0 收藏0
  • ES6、7、8常用特性總結(jié)(超實(shí)用)

    摘要:定義類常用新特性在一個(gè)數(shù)組或者列表中檢查是否存在一個(gè)值還能在字符串中使用除了增強(qiáng)了可讀性語義化,實(shí)際上給開發(fā)者返回布爾值,而不是匹配的位置。 ES6常用新特性 1. let && const let 命令也用于變量聲明,但是作用域?yàn)榫植?{ let a = 10; var b = 1; } 在函數(shù)外部可以獲取到b,獲取不到a,因此例如for循環(huán)計(jì)數(shù)器就適...

    atinosun 評論0 收藏0
  • ES6、7、8常用特性總結(jié)(超實(shí)用)

    摘要:定義類常用新特性在一個(gè)數(shù)組或者列表中檢查是否存在一個(gè)值還能在字符串中使用除了增強(qiáng)了可讀性語義化,實(shí)際上給開發(fā)者返回布爾值,而不是匹配的位置。 ES6常用新特性 1. let && const let 命令也用于變量聲明,但是作用域?yàn)榫植?{ let a = 10; var b = 1; } 在函數(shù)外部可以獲取到b,獲取不到a,因此例如for循環(huán)計(jì)數(shù)器就適...

    Xufc 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<