用过ReactNative的同窗确定见过相似下面的代码:javascript
import { Text, View } from 'react-native';
这就是ES2015为JavaScript带来的另外一个新的语法:解构赋值。php
解构赋值(Destructuring assignment), 是用来让咱们从数组或者对象中提取数据赋值给不一样的变量。java
语法以下:react
从数组中解构赋值react-native
let [a, b] = [1, 2];
从对象中解构赋值数组
let {a, b} = {a: 1, b: 2}
PHP开发者有没有以为很眼熟? 对了,这不就是:函数
list($a, $b) = [1, 2];
没错,如你所想,ES2015从数组中解构赋值和PHP的语法同样,也能够忽略某些返回值, 甚至全忽略code
let [a, , c] = [1, 2, 3]; [, ,] = [1, 2, 3];
数组的解构赋值很简单,咱们继续来看看对象的解构赋值:对象
let object = { f: 1, b: 2 } let {f, b} = object;
那我想赋值给不一样变量的名字该怎么办呢,以下:ip
let {f: foo, b: bar} = object;
要记住,这样一来,真正初始化并赋值的是foo 和 bar。
解构赋值操做不会抛错(Fail-soft),若是没有找到,将会用undefined赋值过去。
let [a] = []; // a === undefined let {b} = {}; // b === undefined
一样,咱们也能够设置默认值:
let [a = 1] = []; // a === 1 let {b = 2} = {}; // b === 2
也能够应用在函数参数中:
function draw({color, using = '粉笔'}) { console.log('使用' + color + '的' + using + '画画!'); } draw({color: '红色'}); draw({color: '蓝色', using: '蜡笔'});
结果以下:
> 使用红色的粉笔画画! > 使用蓝色的蜡笔画画!