在方法中仅使用默认参数提供某些javascript参数

时间:2018-06-01 20:32:14

标签: javascript

如果我有这样的方法 function something(a,b,c=5,d=10,e=false) 我想只提供参数a,b和e,并将余数设置为默认值。

在python中,我会发出一个对这个函数的调用,如:

k = something(a,b,e=True)

但是有一种等效的方法在Javascript中只指定一个默认参数吗?

1 个答案:

答案 0 :(得分:2)

您必须使用undefined填写缺失的内容:

k = something(a, b, undefined, undefined, true)

尽管如此,更好的方法是重写函数以接收选项参数作为参数:

function something(a, b, options) {
    if (options.c === undefined) options.c = 5;
    if (options.d === undefined) options.d = 10;
    if (options.e === undefined) options.e = false;
    // use options.c, options.d and options.e here
    // (give better names to them of course)
}

k = something(a, b, { e: true })

或者使用ES6解构分配语法:

function something(a, b, { c=5, d=10, e=false }) {
    // use c, d and e directly here
    // (again, you should give better names to them of course)
}

k = something(a, b, { e: true })

这是在javascript中从Python处理“命名参数”的常用方法。由于无法直接引用命名参数(就像在python中那样),因此在JavaScript中我们经常使用options参数(这是一个普通的对象,而不是可以很容易地在线创建)。当你习惯了这种语法时,你会发现它几乎和python一样。