ES6新特性有哪些?快來看看吧(一)

前面簡單講解了數(shù)組,字符串,對象的一些api;不太完全,后續(xù)在補(bǔ)充,接下來更新ES6的新特性:

let:

作用:用來聲明變量,它的用法類似與var。但是注意:let所聲明的變量,只有在let命令所在的代碼塊內(nèi)有效;

實(shí)例:

{

let a=10;

var b=1;

}

a? // ReferenceError:a is not defined? 報錯

b? // 1

這表明,let聲明的變量只在它所在的代碼塊有效;

for循環(huán)的計數(shù)器,就很適合使用let命令。

for(? let i=0;i<10;i++){

? ? ? ? ?// ...

}

console.log(i);? // ReferenceError: i is not defined

此時在外面打印這個i,就會報錯,i只在for循環(huán)體內(nèi)有效;

但是如果用 var 代替 let 最后 輸出結(jié)果 就為 10??

這是什么原理?這就涉及到作用域了。

上面這個實(shí)例中, i? 是用 var 聲明的,在全局范圍內(nèi)有效,所有全局變量只有一個 i ;每循環(huán)一次,i 的 值都會改變,而循環(huán)體內(nèi) console.log(? i? )指向的是全局的 i ;所以 ,最后輸出的是最后一輪的 i 的值? 為 10 ;

但是 ,如果是用 let 聲明 的 i ,i 僅在塊級作用域內(nèi)有效

除此之外, for循環(huán)有一個特別之處

就是設(shè)置循環(huán)變量的那一部分是父作用域,而循環(huán)體里面的是子作用域

具體實(shí)例

可以看到輸出三次 abc 要記住同一個作用域內(nèi) 不可以用let 重復(fù)聲明同一個變量? 而從輸出結(jié)果來看,并沒有報錯,由此說明,兩個并沒有在同一個作用域內(nèi),

let? 不存在變量提示

var 可以先聲明在定義? 而let 不行?

具體實(shí)例:


瀏覽器在加載代碼時,會發(fā)生預(yù)解析(變量提示) ,預(yù)解析會把所以帶var 的和function 進(jìn)行預(yù)解析 ;var 只聲明不定義 , function 聲明 + 定義 ;

而let 聲明的變量一定要跟在聲明之后 ;

暫時性死區(qū);

ES6中明確規(guī)定:如果區(qū)塊中存在let 和const命令,這個區(qū)塊對這些命名聲明的變量。從開始就形成了封閉塊級作用域,凡是在聲明之前就是用這些變量,就會報錯。

總之,在代碼塊內(nèi),使用let命名聲明變量之前,該變量都是不可用的,在語法上稱為“暫時性死區(qū)”(temporal dead zone,簡稱 TDZ)

const :

作用:聲明一個常量,一旦聲明,此值就不可改變;

看下實(shí)例:


聲明一個PI的常量,再給他重新賦值就會拋錯;就意味這,一旦聲明必須的賦值,否則報錯


const 和 let 一樣 只在聲明的塊作用域內(nèi)有效,同時和let一樣也存在暫時性死區(qū);

如果常量保存的值為引用類型(復(fù)雜類型),只能保證引用類型的地址不能被改變,而地址指向的內(nèi)容是可以修改的


相當(dāng)于從新賦值,就會報錯


但是給數(shù)組arr添加一個5就不會報錯

let 和const 與window 解綁

var a = "ok";

console.log( window.a );

let c= "ok";

console.log( window.c );

const b = "javascript";

console.log( window.b );


用var聲明的變量window 可以查找到而let 和const不行

在這里再講一下頂層對象:

瀏覽器的頂層對象為window,在node中頂層對象為goobal。在ES5中頂層對象的屬性和全局變量是等價的。


由此可見,頂層對象的屬性賦值和全局變量的賦值是同一件事

在ES6中,let ,const 聲明的全局變量都不屬于頂層對象的屬性,但是var和function聲明的全局變量,仍然是window的屬性

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ES6 新特性 ES6 新特性 一ES6簡介 二塊級作用域綁定1 let聲明2 const聲明Constant D...
    _無為_閱讀 940評論 0 3
  • 一、新增 let 和 const ES5只有兩種聲明變量的方法var命令和function命令;ES6添加了let...
    四的開根號閱讀 662評論 0 1
  • let 和 const 命令 let 命令 塊級作用域 const 命令 頂層對象的屬性 gl...
    安小明閱讀 1,044評論 0 0
  • 概覽 ES6,全稱ECMAScript 6.0,是JavaScript的下一版本標(biāo)準(zhǔn),2015.06發(fā)布。 ES6...
    亞齊閱讀 655評論 0 0
  • let和const命令 var:聲明變量,更多的是全局作用域,存在變量提升 let:聲明變量,存在于塊級作用域,不...
    zhangivon閱讀 2,563評論 1 13

友情鏈接更多精彩內(nèi)容