Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带默认参数的ES6:是否传入参数_Javascript_Ecmascript 6_Default Parameters - Fatal编程技术网

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
    }
})();