function myfunc(value1, value2='defaultValue') {
//some stuff
}
如何知道如果参数传入或不传入函数。我知道默认值将被设置,如果你没有传入任何参数。我实际上是想检查用户是否传递任何东西作为第二个参数(即使它与默认值相同)并更改我的返回值相应的价值。具有默认参数的ES6:参数是否被传入
我被检查出ES6 docs和this SO answer,真的没有什么,我期待的。
感谢,
function myfunc(value1, value2='defaultValue') {
//some stuff
}
如何知道如果参数传入或不传入函数。我知道默认值将被设置,如果你没有传入任何参数。我实际上是想检查用户是否传递任何东西作为第二个参数(即使它与默认值相同)并更改我的返回值相应的价值。具有默认参数的ES6:参数是否被传入
我被检查出ES6 docs和this SO answer,真的没有什么,我期待的。
感谢,
arguments
仍然代表你发送的实际参数,所以arguments.length
会给你的信息。
function myfunc(value1, value2='defaultValue') {
console.log("value1", value1);
console.log("value2", value2);
console.log("length", arguments.length);
}
myfunc("foo");
在一个标准的JavaScript引擎,输出
value1 foo value2 defaultValue length 1
arguments
不会箭头功能工作,虽然和estus发布a good alternative that does。
对于复杂的参数处理其余参数可以是有益的,也不赞成arguments.length
:
function myfunc(...args) {
let [value1, value2 = 'defaultValue'] = args;
console.log("value1", value1);
console.log("value2", value2);
console.log("args.length", args.length);
}
myfunc("foo");
手册参数解析为与直观的方法为缺省值,即,通过当参数中的情况下是特别有用应取代默认值,即使它是undefined
:
function myfunc(...args) {
const defaultArgs = ['defaultValue1', 'defaultValue2'];
let [value1, value2] = Object.assign(defaultArgs, args);
...
}
优秀的选择,并且具有在箭头函数中工作的优势('arguments'不会)。 –
这是正确的,箭头和常规函数之间的不一致是选择公分母(休息)的很好理由。为了让事情变得更糟,'arguments'是延迟动作炸弹,它将在传输代码和一些本地实现中以箭头形式工作,但会在其他本地实现中破解。 – estus