在ES6中,定义参数的最佳方式是在具有默认值的参数之后



在函数参数使用默认值语法的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引擎中,它看起来是否是实际调用函数的方式。

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

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

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

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

这是最简洁的方式吗?

是的。Elisions(类似于数组[,,,])在函数调用中在语法上无效。您可以将undefined缩短为void 0,但这并不是真正的惯用用法(只有minifier才能做到这一点)。

最新更新