插个旗子🚩纪念一番,这是ES6的第一篇文章( ̄︶ ̄)↗ 。
ES6
ECMAScript是一种脚本语言的标准规范,ES6(ECMAScript)于2015正式发布。
ECMAScript (or ES) is a scripting-language specification standardized by Ecma International in ECMA-262 and ISO/IEC 16262. It was created to standardize JavaScript, so as to foster multiple independent implementations. ——《维基百科》
什么是解构赋值
ES6中,可以使用数组和对象对变量赋值,叫做“解构赋值”。
解构赋值可以分为:数组的解构赋值、对象的解构赋值。
解构赋值清晰又简洁,优雅又有效率。是不可多得的“赋值利器”。
使用说明书
数组的解构赋值
一一对应:
let arr =[1,2,5];
let [a,b,c]=arr;
console.log([a,b,c]);
对应关系是这样滴:
如果数量不一样?? :
let arr =[1,2,5,6];
let [a,b,c]=arr;
console.log([a,b,c]);
多余的会被忽略掉。
let arr =[1,2];
let [a,b,c]=arr;
console.log([a,b,c]);
少的会undefined。
甚至还可以跳过:
let arr =[1,2,3];
let [a,,c]=arr;
console.log([a,,c]);
对应关系是这样滴:
对象的解构赋值
一一对应:
let a={
first:1,
second:2
}
let {first,second}=a;
console.log({first,second})
按属性名的一一对应关系来赋值:
如果数量不一样?? :
let a={
first:1
}
let {first,second}=a;
console.log({first,second})
找不到的属性会undefined。
如果键名不对应:
let a={
one:1,
two:2
}
let {first,second}=a;
console.log({first,second})
顺序有影响吗? :
let a={
second:2,
first:1
}
let {first,second}=a;
console.log({first,second})
因为对象是元素的无序集合,所以顺序有并没有影响。
可以提供默认值
如{first=10,second}。
一些应用
交换两个变量的值(无需第三个容器)
原来我们如果要交换两个变量的值,需要这么搞:
let a=1;
let b=2;
let c;
c=a;
a=b;
b=c;
console.log(a);
console.log(b);
呃,有效但颇为繁琐......
但是,有了解构赋值后:
let a=1;
let b=2;
[a,b]=[b,a]
console.log(a);
console.log(b);
函数参数
原来我们写个函数,如果参数较多时,实参万一写错一个,就一步错,步步错:
function f(a,c,b,d,e,f,g){
console.log(a,b,c,d,e,f,g)
}
f("one","two","three","four","five","six","seven")
但是现在,我们有了赋值利器——解构赋值:
function f({a,c,b,d,e,f,g}){
console.log(a,b,c,d,e,f,g)
}
f({a:"one",b:"two",c:"three",d:"four",e:"five",f:"six",g:"seven"})
清晰明了,想出错都难。
嗯,优雅~~
。
。
。
解构赋值在实际中应用还有很多。。。。。。
结束
本文对解构赋值做了简要总结,解构赋值应用广泛,本篇所述内容皮毛而已,希望有所帮助。