es6-变量的解构赋值
2020-01-19 本文已影响0人
ysdyyy
1:数组的解构赋值
基本用法
ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构。
let [a,b,c] = [1,2,3];// 1 2 3
let [a,[[b],c]] = [1,[[2],3]];// 1 2 3
let [,,a] = [1,2,3];// 3
本质上,这种写法属于模式匹配。
let [x,y] = [1,2,3];// 1 2
上述例子为不完全解构。
事实上,只要某种数据结构有Iterator接口,都可以采用数组形式的结构赋值。
2:对象的解构赋值
let {a,b} = {b:1,a:2};
a // 1
b // 2
let { first: f, last: l } = {first: 'hello', last: 'last' };
f// hello
l// last
3:字符串的解构赋值
const [a, b, c, d, e] = 'hello';
4:数值和布尔值的解构赋值
let {toString: s} = 123;
s === Number.prototype.toString // true
let {toString: s} = true;
s === Boolean.prototype.toString // true
解构赋值的规则是:只要等到右边的值不是对象或数组,就将其先转为对象。由于undefined和null不能转为对象,所以对他们进行解构赋值,就会报错
5:函数对象的解构赋值
function add([x,y]){
return x + y;
}
add([1,2]); //3
6:圆括号问题
7:用途
- 交换变量的值
- 从函数返回多个值
- 函数参数的定义
- 提取JSON数据
- 函数参数的默认值
- 遍历map结构
- 引入模块的制定方法