預設值可以是其他變數,但該變數必須已經宣告
物件的結構賦值,依據是屬性名的一致,物件的解構賦值更像是這種方式的簡寫:
// key 值相當於匹配的模式,value 值才是變數
let =
所以物件的解構賦值的內部機制,是先找到同名屬性,然後在賦值給對應的變數,真正賦值的是後者,而不是前者物件的解構同樣也可以使用預設值,預設值產生的條件是物件的屬性值是嚴格等於 undefiend
思考:let } =
時,報錯的原因(foo 沒有匹配到,為undefined,undefined的bar屬性顯然是不存在,導致報錯)
同樣的,將乙個已經宣告的變數進行解構賦值,必須使用圓括號的形式:
// 對於我們想強行進行賦值的,我們可以給其設定對應的 key 值,然後把他們放在 value 值上,這樣就可以利用解構賦值
let x;
( = )
解構賦值允許等號左邊的模式中,不防止任何變數名
如:
// 這裡的字串被轉換成了類陣列
let [a, b, c, d, e] = 'hello'
a // "h"
b // "e"
c // "l"
d // "l"
e // "o"
// 所以同樣具有 length 屬性
let = 'hello';
len// 5
如果等號右邊是數值和布林值,則會先轉為物件
let = 123;
s === number.prototype.tostring // true
let = true;
s === boolean.prototype.tostring // true
本質:解構賦值的規則,只要等號右邊的值不是物件或陣列,就先將其轉為物件,由於 undefined 和 null 無法轉為物件,所以對他們進行解構賦值,都會報錯同正常解構賦值一樣,引數的解構賦值,在於引數的書寫形式:
// 在這裡,函式內部感受到的只是 x 和 y
function
add([x, y])
同樣的函式引數的結構同樣可以使用預設值
function
move
( = {})
交換變數的值(乙個或者多個)
從函式返回多個值(函式只能返回乙個值,所以可以把多個值放進陣列或者物件裡面,使用解構賦值來進行接收)
函式引數的定義(解構賦值可以方便的把一組引數與變數名對應起來)
提取 json 資料(主要是利用物件解構賦值的特點進行提取 json 的資料)
函式引數的預設值(主要是防止在函式內部或多的進行對引數是否為 undefined 的判斷)
遍歷 map 結構
輸入模組的指定方法
ES6學習 解構賦值
解構賦值是對賦值運算子的擴充套件,是一種針對陣列或物件進行模式匹配,對其中變數進行賦值。解構源 解構賦值表示式的右邊部分 解構的目標 解構賦值表示式的左邊部分 注意 左右兩邊,結構格式要保持一致 陣列 let arr 1 2,3 let a,b,c arr console.log a,b,c 1 2...
ES6 學習 解構賦值
一 陣列解構 陣列解構,解構出來的值跟陣列下標是一一對應的,如果左邊變數多於右邊陣列,則左邊後面部分變數值為undefined,如果右邊陣列元素個數多於左邊解構變數個數,則左邊變數全都有值,且一一對應 1.簡單解構 let arr 1,2,5 let a b c arr a 1,b 2,c 5 2....
ES6中解構賦值
理解 解構賦值就是從目標物件或陣列中提取自己想要的變數。最常用的場景是 element ui 或 vant ui 按需引入,請求介面返回想要的資料。陣列解構 乙個蘿蔔乙個坑,按照順序進行 var a,b,c 12,13 a,b 這個寫法報錯 invalid destructuring assignm...