语法
- 可以将值从数组或属性从对象提取到不同的变量中。
- 表达式左边定义了要从原变量中取出什么变量。
var a,b,rest;
[a,b] = [1,2]; //a=1,b=2
[a,b,...rest] = [1,2,3,4,5]; //a=1,b=2,rest=[3,4,5]
({a,b} = {a:10,b:20}); //a=10,b=20
({a,b,...rest} = {a:10,b:20,c:30,d:40}); //a=10,b=20,rest={c:30,d:40}
解构数组
数组解构赋值
let [a,b,c] = [1,2,3];
let [a,[b],c] = [1,[2],3]
//a=1,b=2,c=3
let [a] = 1 //报错!
默认值
let [a,b=2] = [3] //a=3,b=2
let [a=2,b=3] = [undefined,null] //a=2,b=null
let [a=1,b=a] = [2] //a=2,b=2
交换变量
var a=1;
var b=2;
[a,b] = [b,a];
//a=2,b=1
忽略某些值
var arr=[1,2,3,4]
var [a,,,c] = arr
//a=1 c=4
剩余数组
var [a,...b] = [1,2,3,4]
//a=1 ,b=[2,3,4]
------------------------
//不能将逗号放在剩余元素右面,因为剩余元素必须是数组的最后一个元素。
var [a, ...b,] = [1, 2, 3];
// SyntaxError: rest element may not have a trailing comma
解构对象
基本赋值
var o = {a:1,b:2}
var{a,b} = o;
给新的变量名赋值
- 可以从一个对象中提取变量并赋值给和对象属性名不同的新的变量名。
var o = {p: 42,q: true};
var{p:foo,q:bar} = o;
//foo =42, bar = true
默认值
var {a=10,b=5} = {a: 3}
a//3
b//5
var {a:aa = 10, b:bb = 5} = {a: 3};
console.log(aa); // 3
console.log(bb); // 5
网友评论