spread/rest运算符
当...用在数组之前时,它会把这个变量展开为各个独立的值
function foo(x,y,z){
console.log(x,y,z)
}
foo(...[1,2,3]) //1,2,3
这种感觉就类似于foo.apply(null,[1,2,3])
用来扩展值
var a=[2,3,4];
var b=[1,...a,5];
console.log(b) // [1,2,3,4,5]
可以代替concat用法,而且更加的便利,毕竟可以在任意位置插入,方便多了
如果是用concat的话:
[1].concat(a,[5]) //你看是不是麻烦很多,实际开发上来看,就更加头疼了
把一系列的值收集起来存入一个数组里
function foo(x,y,...z){
console.log(x,y,z)
}
foo(1,2,3,4,5); //1,2,[3,4,5]
解构
数组
function foo(){
return [1,2,3]
}
var [a,b,c] = foo();
console.log(a,b,c) //1,2,3
等效于
var temp = foo();
var a=temp[0],b=temp[1],c=temp[2]
对象
function bar(){
return {
x:4,
y:5,
z:6
}
}
var {x:x,y:y,z:z} = bar(); //这里实际省去的是x:部分(key),直接获得x的value,现在直接写x都行,不需要x:x这么麻烦了
console.log(x,y,z) //4,5,6
等效于
var temp = bar();
var x = temp.x,y = temp.y,z = temp.z
箭头函数
传统函数:
function foo(x,y){
return x+y;
}
箭头函数:
var foo = (x,y) => x+y; //真的是太方便了
就像之前刷leet-code的时候,看到一些前辈写的简单sort排序
[].sort((a,b)=>a+b;)
就这么简简单单省去一大部分代码,看着就很舒服
但是可惜的是只能在少代码的函数内比较好用,代码越长可读性就越差(return之类的影响)
for..of循环
for..of循环便利可以迭代对象(iterable)中的值
JS中默认为iterable的标准值包括:
- Arrays
- Strings
- Generators
- Collections/TypedArrays