es6默认参数

1. 默认参数的问题,es5和es6的写法不同,请看下面代码:

// es5的写法
{
    function f(x, y, z) {
        if (y === undefined) {
            y = 7;
        }
        if (z === undefined) {
            z = 42;
        }
        return x + y + z;
    }
    console.log(f(1));
}
// es6的写法
{
    function f1(x, y = 4, z = 12) {
        return x + y + z;
    }
    console.log(f1(1));
}

2. 对于可变参数的问题,es5采用  Array.prototype.slice.call(arguments)来获得 f() 的可变参数列表,arguments指向的是 f() 的参数列表,以数组的形式返回。es6采用扩展运算符的形式来获取函数的参数列表,简化了代码。

// es3,es5可变参数
{
    function f() {
        // 返回可变参数的列表,a是一个数组
        var a = Array.prototype.slice.call(arguments);
        var sum = 0;
        a.forEach(function (item) {
            sum += item + 1;
        });
        return sum;
    }
    console.log(f(1,2,3));
}
// es6的写法
{
    function f3(...a) {
        let sum = 0;
        a.forEach(item=>{
            sum += item + 1;
        });
        return sum;
    }
    console.log(f3(1,2,3));
}

3. 关于扩展运算符的用法,还有很多,比如可以用于数组的合并。

es5合并数组用concat()方法,es6合并数组用扩展运算符来进行合并数组,简化了代码。

{
    // es5合并数组
    var arr = ['hello', 7];
    var arr1 = [1,2].concat(arr);
    console.log(arr1);
}
{
    // es6使用扩展运算符来合并数组
    let arr = ['hello',7];
    let arr1 = [1,2,...arr];
    console.log(arr1);
}

猜你喜欢

转载自blog.csdn.net/lishundi/article/details/81664606
今日推荐