對象解構(gòu)賦值
let node = {
type: "string",
name: "foo"
};
let {type, name} = node;
需要注意的點(diǎn):
- 當(dāng)?shù)仁接疫吺?code>null或者
undefined
會報(bào)錯(cuò) - 如果等式左邊有的值在等式右邊找不到凸椿,則該值為
undefined
- 可以給左邊設(shè)定默認(rèn)值圈驼,且默認(rèn)值只有當(dāng)預(yù)期值
===undefined
才能夠生效 - 可以不使用默認(rèn)名稱,例
let {type:newType, name: newName} = node
- 上面兩個(gè)可以組合使用
- 可以使用嵌套子對象的結(jié)構(gòu)賦值
let node = { name: "foo", othenInfo: { height: 188 } }; let {otherInfo:{height}, name} = node;
- 解構(gòu)的值只會賦值到key/value中的value
數(shù)組解構(gòu)賦值
- 可以交換對象并徘,例:
let [a,b] = [b, a]
- 可以設(shè)定默認(rèn)值
- 可以解構(gòu)嵌套數(shù)組
- 可以使用rest寫法阴孟,同函數(shù)中提到的一樣像云,rest寫法只能放在數(shù)組的最后一項(xiàng)
混合解構(gòu)
可以將數(shù)組和對象混合體放在一起解構(gòu),然而并沒有什么好說的淤翔。
常用方法
在函數(shù)設(shè)定默認(rèn)參數(shù)時(shí)翰绊,例如
setCookie(name, value, {secure, path, domain, expires} = {}){
//dosomething
}
//給后面參數(shù)解構(gòu)賦值為空對象時(shí),就算傳參進(jìn)來的是undefined也不會報(bào)錯(cuò)