变量的结构赋值
数组的解构赋值
- ES6允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构。
let [a,b,c] = [1,2,3];
-
不完全解构:
- let[bar,foo] = [1];
- let[x,y] = [1,2,3];
如果等号的右边不是数组,那么将会报错,对于Set解构,也可以使用数组的解构赋值。
let [x,y,z] = new Set(['a','b','c']);
- 解构赋值允许指定默认值。
let[foo = true] = [];
foo //true
let[x,y = 'b'] = ['a'];//x='a',y='b'
let[x,y = 'b'] = ['a',undefined];//x='a',y='b'
对象的解构赋值
- 解构不仅可以用于数组,还可以用于对象。
let {foo , bar} = {foo:"aaa",bar:"bbb"};
字符串的解构赋值
- 字符串也可以解构赋值。这是因为此时,字符串被转换成了一个类似数组的对象。
const[a,b,c,d,e] = 'hello';
a // 'h'
b // 'e'
c // 'l'
d // 'l'
e // 'o'
数值和布尔值的解构赋值
- 解构赋值时,如果等号右边是数值和布尔值,则会先转为对象。
let {toString: s} = 123;
s === Number.prototyoe.toString // true
let {toString: s} = true;
s === Boolean.prototype.toString // true
函数参数的解构赋值
- 函数的参数也可以使用解构赋值
function add([x,y]){
return x+y;
}
add([1,2]);//3
解构赋值的用途
1.交换变量的值
let x = 1;
let y = 2;
[x,y] = [y,x];
2.从函数返回多个值
函数只能返回一个值,如果要返回多个值,只能将它们放在数组或对象里返回。有了解构赋值,取出这些值就非常方便。
//返回一个数组
function example(){
return[1,2,3];
}
let [a,b,c] = example();
//返回一个对象
function example(){
return{
foo:1,
bar:2
};
}
let {foo , bar} = example();
3.函数参数的定义
解构赋值可以方便地将一组参数与变量名对应起来。
//参数是一组有次序的值
function f([x,y,z]){...}
f([1,2,3]);
//参数是一组无次序的值
function f({x,y,z}){...}
f({z:3,y:2,x:1});
4.提取JSON数据
解构赋值对提取JSON对象中的数据,尤其有用。
let jsonData = {
id: 42,
status: "OK",
data: [867, 5309]
};
let { id, status, data: number } = jsonData;
console.log(id, status, number);
// 42, "OK", [867, 5309]
5.函数参数的默认值
jQuery.ajax = function (url, {
async = true,
beforeSend = function () {},
cache = true,
complete = function () {},
crossDomain = false,
global = true,
// ... more config
} = {}) {
// ... do stuff
};
6.遍历Map结构
7.输入模块的指定方法