成都創(chuàng)新互聯(lián)專(zhuān)注于企業(yè)網(wǎng)絡(luò)營(yíng)銷(xiāo)推廣、網(wǎng)站重做改版、黟縣網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5建站、成都商城網(wǎng)站開(kāi)發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性?xún)r(jià)比高,為黟縣等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。
(1)塊級(jí)作用域:塊作用域由 { }
包括,let和const具有塊級(jí)作用域,var不存在塊級(jí)作用域。塊級(jí)作用域解決了ES5中的兩個(gè)問(wèn)題:
(2)變量提升:var存在變量提升,let和const不存在變量提升,即在變量只能在聲明之后使用,否在會(huì)報(bào)錯(cuò)。
(3)給全局添加屬性:瀏覽器的全局對(duì)象是window,Node的全局對(duì)象是global。var聲明的變量為全局變量,并且會(huì)將該變量添加為全局對(duì)象的屬性,但是let和const不會(huì)。
(4)重復(fù)聲明:var聲明變量時(shí),可以重復(fù)聲明變量,后聲明的同名變量會(huì)覆蓋之前聲明的遍歷。const和let不允許重復(fù)聲明變量。
(5)暫時(shí)性死區(qū):在使用let、const命令聲明變量之前,該變量都是不可用的。這在語(yǔ)法上,稱(chēng)為暫時(shí)性死區(qū)。使用var聲明的變量不存在暫時(shí)性死區(qū)。
(6)初始值設(shè)置:在變量聲明時(shí),var 和 let 可以不用設(shè)置初始值。而const聲明變量必須設(shè)置初始值。
(7)指針指向:let和const都是ES6新增的用于創(chuàng)建變量的語(yǔ)法。 let創(chuàng)建的變量是可以更改指針指向(可以重新賦值)。但const聲明的變量是不允許改變指針的指向。
const保證的并不是變量的值不能改動(dòng),而是變量指向的那個(gè)內(nèi)存地址不能改動(dòng)。對(duì)于基本類(lèi)型的數(shù)據(jù)(數(shù)值、字符串、布爾值),其值就保存在變量指向的那個(gè)內(nèi)存地址,因此等同于常量。
但對(duì)于引用類(lèi)型的數(shù)據(jù)(主要是對(duì)象和數(shù)組)來(lái)說(shuō),變量指向數(shù)據(jù)的內(nèi)存地址,保存的只是一個(gè)指針,const只能保證這個(gè)指針是固定不變的,至于它指向的數(shù)據(jù)結(jié)構(gòu)是不是可變的,就完全不能控制了。
箭頭函數(shù)是ES6中的提出來(lái)的,它沒(méi)有prototype,也沒(méi)有自己的this指向,更不可以使用arguments參數(shù),所以不能New一個(gè)箭頭函數(shù)。
new操作符的實(shí)現(xiàn)步驟如下:
所以,上面的第二、三步,箭頭函數(shù)都是沒(méi)有辦法執(zhí)行的。
(1)箭頭函數(shù)比普通函數(shù)更加簡(jiǎn)潔
let fn = () => void doesNotReturn();