如果我有这样的方法
function something(a,b,c=5,d=10,e=false)
我想只提供参数a,b和e,并将余数设置为默认值。
在python中,我会发出一个对这个函数的调用,如:
k = something(a,b,e=True)
但是有一种等效的方法在Javascript中只指定一个默认参数吗?
答案 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一样。