首页 > 解决方案 > 在具有默认参数的方法中仅提供某些 javascript 参数

问题描述

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

在 python 中,我会调用这个函数,比如:

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

但是是否有一种等效的方法可以在 Javascript 中仅指定一个默认参数?

标签: javascript

解决方案


您必须使用以下内容填写缺失的内容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 中的一样。


推荐阅读