ES6解构赋值


结构解构可以分为数组,对象和函数

对象的话有以下几种

var { foo } = pony //等同于var foo = pony.foo
var { foo: baz } = pony //等同于var baz = pony.foo
var { foo = 'bar' } = baz //baz.foo不存在或未赋值,foo='bar'
var { foo, bar: baz } = { foo: 0, bar: 1}//foo = 1, bar is not defined, baz = 1
var { foo: { bar } } = { foo: { bar: 'baz' } }//可以深层获取bar='baz'
var { foo: { bar: deep } } = { foo: { bar: 'baz' } }//可以设置别名
var { foo } = {}//foo = undefined
var { foo: { bar } } = {}//Cannot read property 'bar' of undefined

数组分为

[a, b] = [0, 1] //a: 0 and b: 1
[a, , b] = [0, 1, 2] //a: 0 and b: 2
[a, b] = [b, a] //相互调换

函数有

function foo (bar=2) {} //设置默认值
function foo (bar={ a: 1, b: 2 }) {}
function foo ({ a=1, b=2 }) {}
function foo ({ a=1, b=2 } = {}) {}//如果未提供任何内容,则默认为空对象

相关