在 ES6 中定义参数跟在具有默认值的参数后面的最佳方法?

问题描述 投票:0回答:1

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

ecmascript-6
1个回答
0
投票

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

是的,通过

undefined
才是正确的方法

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

不,

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

这是最简洁的方式吗?

是的。省略(如数组

[,,,]
中)在函数调用中在语法上是无效的。您可以将
undefined
缩短为
void 0
,但这并不是很惯用(只有缩小器才能做到这一点)。

© www.soinside.com 2019 - 2024. All rights reserved.