阅读 507

函数参数的解构赋值

摘自:《ES6标准入门(第三版)》

函数参数的解构赋值也可以使用解构赋值

    function move ({x = 0, y = 0} = {}) {
        return [x, y]
    }
    
    move({x: 3, y: 8});  // [3, 8]
    move({x: 3});        // [3, 0]
    move({})             // [0, 0]
    move()               // [0, 0]
复制代码

上面的代码中,函数 move 的参数是一个对象,通过对这个对象进行解构赋值,得到变量 x 和 y 的值。如果解构失败,x 和 y 等于默认值。

注意,下面的写法会得到不一样的结果。

    function move({x, y} = {x: 0, y: 0}) {
        return [x, y]
    }
    move({x: 3, y: 8});  // [3, 8]
    move({x: 3});        // [3, undefined]
    move({})             // [undefined, undefined]
    move()               // [0, 0]
复制代码

上面的代码是为函数 move 的参数指定默认值,而不是为变量 x 和 y 指定的默认值,所以会得到与前一种写法不同的结果。 undefined 就会触发函数的默认值。

[1, undefined, 3].map({x = 'yes'} => x) // [1, 'yes', 3]
复制代码
文章分类
阅读
文章标签