你不知道的javascript下卷读书笔记()

172 阅读1分钟

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的标准值包括:

  1. Arrays
  2. Strings
  3. Generators
  4. Collections/TypedArrays