美文网首页
es6三个点...

es6三个点...

作者: 张凯斯 | 来源:发表于2018-06-01 14:34 被阅读0次

    ...  展开运算符 (作用:数组与参数的相互转换)

    用于函数调用

    1.将数组转为参数

    function filter1(type,x,y){

        console.log(x)//true

        console.log(y)//0

    }

    let items=[true, 0,false]

    filter1('boolean',...items);

    2.将参数或iterable转为数组

    iterable是ES6标准引入的新的类型。而Array、Map和Set都属于iterable类型 

    function filter1(type,...items){

        console.log(items)//  [true, 0,false] 

    }

    filter1('boolean',true,0,false);

    例子:

    1.

    function push(array, ...items) { 
       // var arr =[2,3]    
       // arr.push(1,5,7)
        //console.log(arr) //[2, 3, 1, 5, 7]
         array.push(...items);  

    push([],4,7,9)  //[4,7,9]

    2.数组自由合并(将数组转为参数)

    var iterableObj = ["第一个","first"]

    var arr = [...iterableObj, 4, 5, 6]

    console.log(arr) // ["第一个", "first", 4, 5, 6]

    function a(a,b,c,d){

        console.log(arguments)

        console.log(a)//[1, Array(2), 4]

        console.log(b)//5

        console.log(c)//6

        console.log(d)//[7]

    }

    var arr = [

    [1,[2,3],4],

    5,6,[7]

    ]

    a(...arr)

    ES5

    目前为止,我们都是使用Function.prototype.apply方法来将一个数组展开成多个参数:

    function myFunction(x, y, z){ }

    varargs = [0,1,2];

    myFunction.apply(null, args);

    使用es6的展开运算符可以这么写:

    function myFunction(x, y, z){ }

    varargs = [0,1,2];

    myFunction(...args);

    选择性传参

    function filterPara(type, ...items){

        console.log(items) //[false,4,'Welcome',7]

        return items.filter(item=>

            typeof item === type

        );

    }

    filterPara('number',false,4,'Welcome',7);// => [4, 7]

    数据解构

    let cold = ['autumn', 'winter','spring', 'summer'];

    let otherSeasons, autumn;

    [autumn, ...otherSeasons] = cold;

    otherSeasons// ["winter", "spring", "summer"]

    数据构造

    两个对象连接返回新的对象

    let a = {aa:'aa'}

    let b = {bb:'bb'}

    let c = {a,b}

    console.log(c)  //{a: {aa:'aa'}, b: {bb:'bb'}}

    let a = {aa:'aa'}

    let b = {bb:'bb'}

    let c = {...a,...b}

    console.log(c)  // {aa: "aa", bb: "bb"}

    相关文章

      网友评论

          本文标题:es6三个点...

          本文链接:https://www.haomeiwen.com/subject/qwzqxftx.html