ES6學(xué)習(xí)筆記第二章-創(chuàng)新互聯(lián)

let 和 const命令

創(chuàng)新互聯(lián)公司堅(jiān)信:善待客戶,將會(huì)成為終身客戶。我們能堅(jiān)持多年,是因?yàn)槲覀円恢笨芍档眯刨?。我們從不忽悠初訪客戶,我們用心做好本職工作,不忘初心,方得始終。十年網(wǎng)站建設(shè)經(jīng)驗(yàn)創(chuàng)新互聯(lián)公司是成都老牌網(wǎng)站營(yíng)銷服務(wù)商,為您提供網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)、網(wǎng)站設(shè)計(jì)、H5場(chǎng)景定制、網(wǎng)站制作、成都品牌網(wǎng)站建設(shè)、小程序設(shè)計(jì)服務(wù),給眾多知名企業(yè)提供過(guò)好品質(zhì)的建站服務(wù)。

    1 let命令

    用法:

    ES6新增let命令,用于聲明變量,用法類似var,只是let聲明的變量是塊級(jí)作用域內(nèi)有效

    例:

    {

       let a = 10;

        var b = 1;

    }

    a // a is not defined

    b // 1

    根據(jù)返回值可以看出,let聲明變量時(shí)的作用域只在其代碼塊內(nèi)

    for 循環(huán)的計(jì)數(shù)器就很適合使用let來(lái)聲明變量。

    var a = [];

    for (var i = 0; i<10; i++){

        a[i] = function(){

            console.log(i);

        };

    }

    a[6]();//10

    如果用let聲明變量i;

    a[6]();//6

    因?yàn)閘et聲明的i只在本輪循環(huán)內(nèi)有效。所以每次循環(huán)的i其實(shí)都是新的變量,于是輸出6。

    let聲明變量不存在變量提升;

    例:

    console.log(foo);

    let foo = 2;

    執(zhí)行會(huì)報(bào)錯(cuò),但是如果用var聲明,得到的結(jié)果就是2。

    暫時(shí)性死區(qū):

    只要塊級(jí)作用域內(nèi)存在let命令,它所聲明的變量就“綁定這個(gè)區(qū)域”,不受外部影響。

    例

    var tmp =123 ;

    if(true){

        tmp = 'abc';

        let tmp;

     }

    報(bào)錯(cuò),let綁定了if內(nèi)的塊級(jí)作用域,在let聲明變量前,對(duì)tmp賦值會(huì)報(bào)錯(cuò)。

    ES6明確規(guī)定,如果區(qū)塊 存在let和const命令,則這個(gè)區(qū)塊對(duì)這些命令聲明的變量從一開始就形成封閉作用域。

    在代碼塊內(nèi),使用let命令聲明變量之前,該變量都是不可用的。語(yǔ)法上稱“暫時(shí)性死區(qū)”,簡(jiǎn)稱TDZ。

    let不允許在相同作用域內(nèi)重復(fù)聲明同一個(gè)變量。(這個(gè)就不解釋了)

  2.塊級(jí)作用域到底是個(gè)啥

    ES5只有函數(shù)作用域和全局作用域,沒有塊級(jí)作用域,那么會(huì)帶來(lái)以下不合理情況:

  例1

    var tmp = new Date();

    funciton f(){

        console.log(tmp);

        if(false){

            var tmp = "hello world";

        }

    }

    f() //undefined;

    變量提升內(nèi)層tmp變量覆蓋了外層的tmp變量

  例2

     for 循環(huán)計(jì)數(shù)的變量泄露為全局變量。

    ES6的塊級(jí)作用域

    function f1(){

        let n = 5;

        if(true){

            let n = 10;

        }

        console.log(n);//5

    }

    最后輸出5,表明外層代碼不受內(nèi)層代碼塊的影響。如果使用var, 最后的輸出值為10.

    ES6允許塊級(jí)作用域任意嵌套;

    另外ES6規(guī)定,函數(shù)本身作用域在其所在的塊級(jí)作用域內(nèi)。

  fuction f(){ console.log(1)};

    (function (){

        function f(){
            console.log(2);
        }

        f();

    }());

    ES5//2,

    ES6//1。

    嚴(yán)格模式下,函數(shù)只能在頂層作用域和函數(shù)內(nèi)聲明,其他情況(if,for)下的聲明都會(huì)報(bào)錯(cuò)。

3.const命令

    const 用來(lái)聲明常量。 一旦聲明,其值不可改變。

    const 作用域等同于let,只在聲明所在的塊級(jí)作用域內(nèi)有效。

    const 命令只是保證變量名指向的地址不變,并不保證該地址的數(shù)據(jù)不變,所以將一個(gè)對(duì)象聲明為常量必須非常小心。

    例

    const a=[];

    a.push("hello");//可執(zhí)行

    a.length = 0; //可執(zhí)行

    a = ['Dave'];// 報(bào)錯(cuò)。

    數(shù)組本身是可寫的,但是要把另一個(gè)數(shù)組賦值給a,就會(huì)報(bào)錯(cuò)。

    如果想讓對(duì)面被凍結(jié),本身也不可寫,應(yīng)該使用Object.freeze方法。

    ES6一共6中聲明變量的方法:

    var function let const import class

4.跨模塊常量

    // constants.js 模塊

    export const A= 1;

    export const B= 3;

    export const C= 4;

    // test1.js 模塊

    import * as constants from './constants';

    console.log(constanst.A);//1

    console.log(constanst.B);//3

    //test2.js模塊

    import {A,B} from './constants';

    console.log(A);//1

    console.log(B);//3

5.全局對(duì)象的屬性

  ES5:

    window.a = 1;

    a //1;

    a = 2;

    window.a //2

  ES6:

    let b = 1;

    window.b // undefined;

    ES6規(guī)定 var 命令和function 命令聲明的全局變量依舊是全局對(duì)象的屬性

    let命令 、 const命令、 class命令聲明的全局變量不屬于全局對(duì)象的屬性

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

當(dāng)前文章:ES6學(xué)習(xí)筆記第二章-創(chuàng)新互聯(lián)
文章URL:http://muchs.cn/article30/djggpo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供靜態(tài)網(wǎng)站、商城網(wǎng)站、響應(yīng)式網(wǎng)站網(wǎng)站內(nèi)鏈、微信公眾號(hào)、定制開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)