1.数组解构
let [a,b,c,d] = ['aa','bb',77,88]
嵌套数组解构
let [a,b,[c,d],e] = ['aa','bb',[33,44],55]
空缺变量
let [a,b,,e] = ['aa','bb',[33,44],55]
多余变量
let [a,b,,e,f] = ['aa','bb',[33,44],55]
默认值
let [a,b,,e,f='hello'] = ['aa','bb',[33,44],55]
2.对象解构
let obj = new Object()
obj.uid = 111
obj.uname = '张三'
obj.arr = ['aa','bb']
let {uid:id,uname:name} = obj // 顺序改变无影响
alert(name) //直接输出 值
小括号:
let uid,uname,arr,a,b,c //定义键名
({uid,uname,arr:[a,b,c='ccc']} = obj) // c 为默认值 必须有小括号,否则 {} 就会被解读为语句块
可嵌套(例如:arr)
可有默认值 (例如:c)
3.字符串解构
let [a,b,c,d] = '倚天屠龙'
console.log(a,b,c,d)
4.函数解构
function login () {
let obj = new Object
obj.uid = 111
obj.uname = '张三'
// 调用 analysis 方法, 传入 obj
analysis(obj)
}
function analysis ({uid,uname}) {
alert(uid);
alert(uname);
}
analysis(obj)
// 以下也正确
let obj = {uid:121,uname:'张三'}
function analysis ({uname}) {
alert(uname)
}
参数中数组、字符串、默认值、缺位均支持
Symbol 是 ES6 新增的一种值类型数据,表示一种绝不重复的值
let s1 = Symbol(33)
let s2 = Symbol(33)
alert(s1 == s2) // false
.