摘要:另外對于已經聲明的變量進行解構賦值時,要非常小心。因此在行首加,將其強制轉化為表達式執行。由于和無法轉為對象,所以對它們進行解構賦值,都會報錯。
let和const
let和const是es6新增的兩個變量聲明關鍵字,與var的不同點在于:
(1)let和const都是塊級作用域,在{}內有效,這點在for循環中非常有用,只在循環體內有效。var為函數作用域。
(2)使用let和const聲明的變量,不存在變量提升,必須先聲明再使用。使用var聲明的變量可以先使用再定義。
(3)不可重復聲明。一旦用var,let或者const聲明過的變量,再次用let或者const聲明時會報錯,函數的參數名如果用let或者const在函數體內聲明同名的參數時,也會報錯。
const特殊要點:
(1)const顧名思義常量,但這個常量與高級語言的常量有所不同,這里的常量指的是在定義就確定其值,并且這個值只讀,不可以修改;高級語言的常量更狹隘一點;
(2)使用const聲明的變量,一旦聲明需要立即初始化,只聲明的變量無法用const,const a; 編譯會報錯;并且一旦初始化,就不能改變。
(3)const用于定義一個復合型對象或者數組時,只是對對象或者數組本身不可賦值,但依然可以為對象添加屬性或者為數組push元素。
解構賦值
解構是按照一定的模式,從數組和對象中提取值,對變量進行賦值,解構表達式的左側是一般[]或者{}。當解構表達式的左側是[]時,右側也必須是對應的具有可遍歷屬性的對象,因此可以是[],map或者string;當解構表達式的左側為{}時,javascript解析器會先將右側的值轉換為對象,然后從轉換的對象獲取對應的屬性值。總之,解構一個很重要的原則就是“模式匹配”,根據左側是[]或者{},對右側進行轉換,如果轉換后,兩側模式匹配,則進行解構賦值,否則報錯。
同時,解構時允許設置默認值,但這里的執行順序是:先解構,如果解構得到的值為非undefined,則變量值=解構的值,默認賦值表達式不執行;只有當解構得到的值嚴格等于undefined時,才會執行默認賦值表達式,否則默認賦值表達式是不執行的。
1.數組解構
數組的解構是按照變量的順序進行賦值的,因此變量的值與數組的順序息息相關,不同的順序,解構得到的值也不同。
2.對象解構
對象解構與數組解構不同,對象解構與元素的順序無關,對象解構的主要依據是對象的屬性,對象的屬性沒有次序,變量必須與屬性同名,才能取到正確的值。
3.函數參數解構
函數參數解構其實是數組解構或者對象解構的一種應用,在es6中可以為函數參數指定默認值,這點和解構一起使用,對于參數賦值非常實用。函數參數的解構同樣要求模式匹配,函數定義時的參數的數據類型和調用時傳入的參數類型保持一致。
另外:對于已經聲明的變量進行解構賦值時,要非常小心。下面的示例中,首先用let對變量進行了聲明,由于let和const聲明的變量不能重復聲明,在通過解構表達式賦值時,javascript解析器會將行首的{}解析為代碼塊,報語法錯誤。因此在行首加(),將其強制轉化為表達式執行。
4.字符串的解構賦值
字符串也可以進行解構賦值,因為字符串可以轉化為一個具有類似數組的對象。
5.數字和布爾值的解構賦值
解構賦值時,如果等號右邊是數值和布爾值,則會先轉為對象。解構賦值的規則是,只要等號右邊的值不是對象,就先將其轉為對象。由于undefined和null無法轉為對象,所以對它們進行解構賦值,都會報錯。
參考文獻:http://es6.ruanyifeng.com/#do...
http://es6.ruanyifeng.com/#do...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/102119.html
摘要:消除字符串頭部空格消除尾部空格從頭部補全字符串從尾部補全字符串 let和const var關鍵字定義變量的特點: 可以重復定義 不能定義常量 不支持塊級作用域 let的特點 不可以重復定義 變量不能提升,在變量定義之前,不能使用 在大括號當中定義的變量(塊級作用域中),在作用域外無法訪問 解決一些ES5當中需要閉包實現的功能,比如:每隔1秒循環輸出一個當前的值 const的特點...
摘要:和命令命令在聲明所在的塊級作用域內有效。解構賦值從數組和對象中提取值,對變量進行賦值,這被稱為解構。數值和布爾值的解構解構賦值時,如果等號右邊是數值和布爾值,則會先轉為對象。默認值解構賦值允許指定默認值。 let和const命令 let命令 在聲明所在的塊級作用域內有效。 只要塊級作用域內存在let命令,它所聲明的變量就綁定(binding)這個區域,不再受外部的影響。 在同一個作用...
閱讀 2590·2021-11-18 10:02
閱讀 1722·2021-09-30 10:00
閱讀 5353·2021-09-22 15:27
閱讀 1226·2019-08-30 15:54
閱讀 3685·2019-08-29 11:13
閱讀 2960·2019-08-29 11:05
閱讀 3337·2019-08-29 11:01
閱讀 582·2019-08-26 13:52