在ES6中使用默认值的参数遵循已定义参数的最佳方法是什么?

时间:2015-10-28 21:40:05

标签: ecmascript-6

在ES6中使用函数参数的默认值语法,在函数调用中使用第一个参数的默认值时,定义第二个参数的最佳方法是什么?

function test(arg1 = 2, arg2 = 3) {
    return arg1 + arg2;
}

test() // returns 5;
test(undefined, 2) // returns 4; is this the most concise way?

另外,第二种方法是否按照标准调用?我只用我的交叉编译器测试它,它只是插入一个声明设置参数值,如果它等于undefined;不确定在实际的ES6引擎中它是否看起来像实际调用函数的方式。

1 个答案:

答案 0 :(得分:0)

  

在函数调用中使用第一个参数的默认值时,定义第二个参数的最佳方法是什么?

是的,通过undefined是正确的方法。

  

这是否符合标准?不确定它是否真正查看函数的调用方式。

不,undefined等同于参数列表中未传递的参数 - 两个方向。如果您明确传递undefined,则默认初始化程序将运行,就像您没有传递任何内容一样。如果您没有传递任何内容,则所有参数(无默认值)都将被分配undefined,就像您明确地通过它一样。
区分它们的唯一方法是使用arguments.length

  

这是最简洁的方式吗?

是。在函数调用中,Elisions(如数组[,,,])在语法上无效。您可以将undefined缩短为void 0,但这不是真正惯用的(只有缩小器会这样做)。