Javascript 带默认参数的ES6:是否传入参数
我如何知道参数是否传入函数。我知道,如果不将任何内容作为参数传入,将设置默认值。我实际上想检查用户是否将任何内容作为第二个参数传入(即使它与默认值相同),并相应地更改我的返回值 我是要退房的,不是我想要的Javascript 带默认参数的ES6:是否传入参数,javascript,ecmascript-6,default-parameters,Javascript,Ecmascript 6,Default Parameters,我如何知道参数是否传入函数。我知道,如果不将任何内容作为参数传入,将设置默认值。我实际上想检查用户是否将任何内容作为第二个参数传入(即使它与默认值相同),并相应地更改我的返回值 我是要退房的,不是我想要的 谢谢,参数仍然表示您发送的实际参数,因此参数.length将为您提供该信息 函数myfunc(value1,value2='defaultValue'){ console.log(“value1”,value1); console.log(“value2”,value2); log(“len
谢谢,
参数
仍然表示您发送的实际参数,因此参数.length
将为您提供该信息
函数myfunc(value1,value2='defaultValue'){
console.log(“value1”,value1);
console.log(“value2”,value2);
log(“length”,arguments.length);
}
myfunc(“foo”)代码>对于复杂的参数处理,rest参数可能是有益的,也不推荐参数。长度
:
函数myfunc(…args){
让[value1,value2='defaultValue']=args;
console.log(“value1”,value1);
console.log(“value2”,value2);
log(“args.length”,args.length);
}
myfunc(“foo”)代码>您可以使用不可伪造的标记作为默认参数值。没有调用方能够将此值作为参数传递,因此“defaultValue”您知道,参数最终可以绑定到此特定值的唯一方式是没有传递任何参数
谢天谢地,ECMAScript有一个不可伪造令牌的数据类型,它完全满足我们的需要:
这当然有点难看,但我认为它比处理参数
更难看,而且它是确切知道是否传递了可选参数的可靠方法,因为Symbol
s是完全不可伪造的。非常好的选项,并且具有使用箭头函数的优点(其中参数不会)。没错,箭头函数和正则函数之间的不一致是选择公共分母(rest)的很好理由更糟糕的是,参数
是延迟动作炸弹,它在传输代码和一些本机实现中以箭头形式工作,但在其他本机实现中会中断。
function myfunc( value1, value2='defaultValue' ) {
//some stuff
}
const myfunc = (() => {
const value2Token = Symbol("value2");
return function myfunc(value1, value2 = value2Token) {
if (value2 === value2Token) { value2 = 'defaultValue'; }
// some stuff
}
})();