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

資訊專欄INFORMATION COLUMN

ES6 學(xué)習(xí)筆記(一)let,const和解構(gòu)賦值

iOS122 / 1599人閱讀

摘要:另外對于已經(jīng)聲明的變量進行解構(gòu)賦值時,要非常小心。因此在行首加,將其強制轉(zhuǎn)化為表達式執(zhí)行。由于和無法轉(zhuǎn)為對象,所以對它們進行解構(gòu)賦值,都會報錯。

let和const

let和const是es6新增的兩個變量聲明關(guān)鍵字,與var的不同點在于:

(1)let和const都是塊級作用域,在{}內(nèi)有效,這點在for循環(huán)中非常有用,只在循環(huán)體內(nèi)有效。var為函數(shù)作用域。

(2)使用let和const聲明的變量,不存在變量提升,必須先聲明再使用。使用var聲明的變量可以先使用再定義。

(3)不可重復(fù)聲明。一旦用var,let或者const聲明過的變量,再次用let或者const聲明時會報錯,函數(shù)的參數(shù)名如果用let或者const在函數(shù)體內(nèi)聲明同名的參數(shù)時,也會報錯。

const特殊要點:

(1)const顧名思義常量,但這個常量與高級語言的常量有所不同,這里的常量指的是在定義就確定其值,并且這個值只讀,不可以修改;高級語言的常量更狹隘一點;

(2)使用const聲明的變量,一旦聲明需要立即初始化,只聲明的變量無法用const,const a; 編譯會報錯;并且一旦初始化,就不能改變。

(3)const用于定義一個復(fù)合型對象或者數(shù)組時,只是對對象或者數(shù)組本身不可賦值,但依然可以為對象添加屬性或者為數(shù)組push元素。

解構(gòu)賦值

解構(gòu)是按照一定的模式,從數(shù)組和對象中提取值,對變量進行賦值,解構(gòu)表達式的左側(cè)是一般[]或者{}。當(dāng)解構(gòu)表達式的左側(cè)是[]時,右側(cè)也必須是對應(yīng)的具有可遍歷屬性的對象,因此可以是[],map或者string;當(dāng)解構(gòu)表達式的左側(cè)為{}時,javascript解析器會先將右側(cè)的值轉(zhuǎn)換為對象,然后從轉(zhuǎn)換的對象獲取對應(yīng)的屬性值??傊?,解構(gòu)一個很重要的原則就是“模式匹配”,根據(jù)左側(cè)是[]或者{},對右側(cè)進行轉(zhuǎn)換,如果轉(zhuǎn)換后,兩側(cè)模式匹配,則進行解構(gòu)賦值,否則報錯。

同時,解構(gòu)時允許設(shè)置默認(rèn)值,但這里的執(zhí)行順序是:先解構(gòu),如果解構(gòu)得到的值為非undefined,則變量值=解構(gòu)的值,默認(rèn)賦值表達式不執(zhí)行;只有當(dāng)解構(gòu)得到的值嚴(yán)格等于undefined時,才會執(zhí)行默認(rèn)賦值表達式,否則默認(rèn)賦值表達式是不執(zhí)行的。

1.數(shù)組解構(gòu)

數(shù)組的解構(gòu)是按照變量的順序進行賦值的,因此變量的值與數(shù)組的順序息息相關(guān),不同的順序,解構(gòu)得到的值也不同。

2.對象解構(gòu)

對象解構(gòu)與數(shù)組解構(gòu)不同,對象解構(gòu)與元素的順序無關(guān),對象解構(gòu)的主要依據(jù)是對象的屬性,對象的屬性沒有次序,變量必須與屬性同名,才能取到正確的值。

3.函數(shù)參數(shù)解構(gòu)

函數(shù)參數(shù)解構(gòu)其實是數(shù)組解構(gòu)或者對象解構(gòu)的一種應(yīng)用,在es6中可以為函數(shù)參數(shù)指定默認(rèn)值,這點和解構(gòu)一起使用,對于參數(shù)賦值非常實用。函數(shù)參數(shù)的解構(gòu)同樣要求模式匹配,函數(shù)定義時的參數(shù)的數(shù)據(jù)類型和調(diào)用時傳入的參數(shù)類型保持一致。

另外:對于已經(jīng)聲明的變量進行解構(gòu)賦值時,要非常小心。下面的示例中,首先用let對變量進行了聲明,由于let和const聲明的變量不能重復(fù)聲明,在通過解構(gòu)表達式賦值時,javascript解析器會將行首的{}解析為代碼塊,報語法錯誤。因此在行首加(),將其強制轉(zhuǎn)化為表達式執(zhí)行。

4.字符串的解構(gòu)賦值

字符串也可以進行解構(gòu)賦值,因為字符串可以轉(zhuǎn)化為一個具有類似數(shù)組的對象。

5.數(shù)字和布爾值的解構(gòu)賦值

解構(gòu)賦值時,如果等號右邊是數(shù)值和布爾值,則會先轉(zhuǎn)為對象。解構(gòu)賦值的規(guī)則是,只要等號右邊的值不是對象,就先將其轉(zhuǎn)為對象。由于undefined和null無法轉(zhuǎn)為對象,所以對它們進行解構(gòu)賦值,都會報錯。

參考文獻:http://es6.ruanyifeng.com/#do...

     http://es6.ruanyifeng.com/#do...

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

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

相關(guān)文章

  • es6 學(xué)習(xí)筆記

    摘要:塊級作用域只有全局作用域和函數(shù)作用域,沒有塊級作用域,這帶來了很多不合理的場景。如聲明變量的方法只有兩種聲明變量的方法命令一共有六種命令變量的解構(gòu)賦值允許按照一定的模式,從數(shù)組和對象中提取,按照位置的對應(yīng)關(guān)系對變量賦值,這被稱為解構(gòu)。 塊級作用域 es5只有全局作用域和函數(shù)作用域,沒有塊級作用域,這帶來了很多不合理的場景。 第一種場景:內(nèi)層變量可能會覆蓋外層變量 var test = ...

    李昌杰 評論0 收藏0
  • ES6學(xué)習(xí)筆記

    摘要:學(xué)習(xí)筆記在學(xué)習(xí)的過程中做的一些記錄,用于未來的快速回憶。數(shù)組成員為時,默認(rèn)值仍會生效因為在內(nèi)部使用嚴(yán)格相等運算符,判斷一個位置是否有值,所以當(dāng)一個數(shù)組成員嚴(yán)格等于默認(rèn)值才會生效。 ES6學(xué)習(xí)筆記 在學(xué)習(xí)ES6的過程中做的一些記錄,用于未來的快速回憶。 let&const 作用域的概念 ES6新增塊級作用域的概念(一個大括號括起來的部分就是一個塊作用域) let與const用于在塊級作...

    mengbo 評論0 收藏0
  • 珠峰培訓(xùn)ES6學(xué)習(xí)筆記1

    摘要:消除字符串頭部空格消除尾部空格從頭部補全字符串從尾部補全字符串 let和const var關(guān)鍵字定義變量的特點: 可以重復(fù)定義 不能定義常量 不支持塊級作用域 let的特點 不可以重復(fù)定義 變量不能提升,在變量定義之前,不能使用 在大括號當(dāng)中定義的變量(塊級作用域中),在作用域外無法訪問 解決一些ES5當(dāng)中需要閉包實現(xiàn)的功能,比如:每隔1秒循環(huán)輸出一個當(dāng)前的值 const的特點...

    番茄西紅柿 評論0 收藏0
  • ES6學(xué)習(xí)筆記1--letconst命令、解構(gòu)賦值Symbol

    摘要:和命令命令在聲明所在的塊級作用域內(nèi)有效。解構(gòu)賦值從數(shù)組和對象中提取值,對變量進行賦值,這被稱為解構(gòu)。數(shù)值和布爾值的解構(gòu)解構(gòu)賦值時,如果等號右邊是數(shù)值和布爾值,則會先轉(zhuǎn)為對象。默認(rèn)值解構(gòu)賦值允許指定默認(rèn)值。 let和const命令 let命令 在聲明所在的塊級作用域內(nèi)有效。 只要塊級作用域內(nèi)存在let命令,它所聲明的變量就綁定(binding)這個區(qū)域,不再受外部的影響。 在同一個作用...

    liaosilzu2007 評論0 收藏0

發(fā)表評論

0條評論

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