在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引擎中它是否看起来像实际调用函数的方式。
答案 0 :(得分:0)
在函数调用中使用第一个参数的默认值时,定义第二个参数的最佳方法是什么?
是的,通过undefined
是正确的方法。
这是否符合标准?不确定它是否真正查看函数的调用方式。
不,undefined
等同于参数列表中未传递的参数 - 两个方向。如果您明确传递undefined
,则默认初始化程序将运行,就像您没有传递任何内容一样。如果您没有传递任何内容,则所有参数(无默认值)都将被分配undefined
,就像您明确地通过它一样。
区分它们的唯一方法是使用arguments.length
。
这是最简洁的方式吗?
是。在函数调用中,Elisions(如数组[,,,]
)在语法上无效。您可以将undefined
缩短为void 0
,但这不是真正惯用的(只有缩小器会这样做)。