假设我有一个函数myfunc
,该函数最多可以包含两个参数:arg1
和arg2
:
var myfunc = function (arg1,arg2) {
console.log(arg1,arg2);
};
我只想使用arg2
来调用函数。但是,当我运行此命令时,输入将传递到第一个参数,并且myfunc
将记录"input" undefined
而不是预期的undefined "input"
。
myfunc(arg2 = 'input')
> "input" undefined
JavaScript是否支持这种类型的输入?
答案 0 :(得分:2)
Javascript不支持带名称的参数。但是您可以使用 Unpacking fields from objects passed as function parameter并将对象传递给函数
var myfunc = function ({arg1,arg2}) {
console.log(arg1,arg2);
};
myfunc({arg2:"input"})
答案 1 :(得分:1)
通过做myFunc(arg2 = 'input)
,您正在做的事情:
arg2 = 'input'
myFunc(arg2)
使其可行的解决方案可以是:
var myfunc = function (arg1='foo',arg2) {
console.log(arg1,arg2);
}
myfunc('bar', 'input')
myfunc(undefined, 'input')
另一种解决方案是使用对象
var myfunc_es5 = function (opts) {
opts = opts || {}
console.log(opts.arg1,opts.arg2);
}
var myfunc_es6 = function ({arg1, arg2}) {
console.log(arg1,arg2);
}
myfunc_es5 ({arg1: 'foo', arg2: 'bar'})
myfunc_es6 ({arg1: 'foo', arg2: 'bar'})
myfunc_es5 ({arg2: 'bar'})
myfunc_es6 ({arg2: 'bar'})
答案 2 :(得分:0)
如果您想表现得像什么都没传递给arg1
,请传递undefined
。
当没有任何参数传递给参数时,将为其分配参数undefined
。
这适用于默认参数:
var func = function(a = 5){return a};
func(undefined); //5