猿问

为JavaScript函数设置默认参数值

为JavaScript函数设置默认参数值

我希望JavaScript函数具有可选参数,并设置默认值,如果未定义值(如果传递值,则忽略该参数)。在Ruby中,您可以这样做:

def read_file(file, delete_after = false)
  # codeend

这在JavaScript中有效吗?

function read_file(file, delete_after = false) {
  // Code}


料青山看我应如是
浏览 632回答 3
3回答

一只斗牛犬

function&nbsp;read_file(file,&nbsp;delete_after)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;delete_after&nbsp;=&nbsp;delete_after&nbsp;||&nbsp;"my&nbsp;default&nbsp;here"; &nbsp;&nbsp;&nbsp;&nbsp;//rest&nbsp;of&nbsp;code}这分配给delete_after价值delete_after如果不是法尔西值,否则它将分配字符串。"my default here"..要了解更多细节,请查看DougCrocford对该语言的调查,并查看关于运算符的部分.如果要传递法尔西价值即false,&nbsp;null,&nbsp;undefined,&nbsp;0或""..如果你需要法尔西中传递的值,则需要使用汤姆·里特的回答.在向函数处理多个参数时,通常允许使用者在对象中传递参数,然后合并这些值的对象包含函数的默认值。function&nbsp;read_file(values)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;values&nbsp;=&nbsp;merge({&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;delete_after&nbsp;:&nbsp;"my&nbsp;default&nbsp;here" &nbsp;&nbsp;&nbsp;&nbsp;},&nbsp;values&nbsp;||&nbsp;{}); &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;rest&nbsp;of&nbsp;code}//&nbsp;simple&nbsp;implementation&nbsp;based&nbsp;on&nbsp;$.extend()&nbsp;from&nbsp;jQueryfunction&nbsp;merge()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;obj,&nbsp;name,&nbsp;copy, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;target&nbsp;=&nbsp;arguments[0]&nbsp;||&nbsp;{}, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;=&nbsp;1, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;length&nbsp;=&nbsp;arguments.length; &nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(;&nbsp;i&nbsp;<&nbsp;length;&nbsp;i++)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;((obj&nbsp;=&nbsp;arguments[i])&nbsp;!=&nbsp;null)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for&nbsp;(name&nbsp;in&nbsp;obj)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;copy&nbsp;=&nbsp;obj[name]; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;(target&nbsp;===&nbsp;copy)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;continue; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;if&nbsp;(copy&nbsp;!==&nbsp;undefined)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;target[name]&nbsp;=&nbsp;copy; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;} &nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;target;};使用//&nbsp;will&nbsp;use&nbsp;the&nbsp;default&nbsp;delete_after&nbsp;valueread_file({&nbsp;file:&nbsp;"my&nbsp;file"&nbsp;}); &nbsp;//&nbsp;will&nbsp;override&nbsp;default&nbsp;delete_after&nbsp;valueread_file({&nbsp;file:&nbsp;"my&nbsp;file",&nbsp;delete_after:&nbsp;"my&nbsp;value"&nbsp;});

慕勒3428872

我发现像这样简单的东西更简洁和可读性更强。function&nbsp;pick(arg,&nbsp;def)&nbsp;{ &nbsp;&nbsp;&nbsp;return&nbsp;(typeof&nbsp;arg&nbsp;==&nbsp;'undefined'&nbsp;?&nbsp;def&nbsp;:&nbsp;arg);}function&nbsp;myFunc(x)&nbsp;{ &nbsp;&nbsp;x&nbsp;=&nbsp;pick(x,&nbsp;'my&nbsp;default');}

红颜莎娜

从…ES-10/ES 2015,默认参数在语言规范中。function&nbsp;read_file(file,&nbsp;delete_after&nbsp;=&nbsp;false)&nbsp;{ &nbsp;&nbsp;//&nbsp;Code}只是起作用了。参考资料:默认参数-MDN默认函数参数允许使用默认值初始化形式参数,如果无值或未定都通过了。你也可以模拟缺省命名参数破坏://&nbsp;the&nbsp;`=&nbsp;{}`&nbsp;below&nbsp;lets&nbsp;you&nbsp;call&nbsp;the&nbsp;function&nbsp;without&nbsp;any&nbsp;parametersfunction&nbsp;myFor({&nbsp;start&nbsp;=&nbsp;5,&nbsp;end&nbsp;=&nbsp;1,&nbsp;step&nbsp;=&nbsp;-1&nbsp;}&nbsp;=&nbsp;{})&nbsp;{&nbsp;//&nbsp;(A) &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Use&nbsp;the&nbsp;variables&nbsp;`start`,&nbsp;`end`&nbsp;and&nbsp;`step`&nbsp;here &nbsp;&nbsp;&nbsp;&nbsp;···}ES 2015前,有很多方法,但这是我最喜欢的方法-它允许你传递任何你想要的,包括假或空。(typeof null == "object")function&nbsp;foo(a,&nbsp;b)&nbsp;{ &nbsp;&nbsp;a&nbsp;=&nbsp;typeof&nbsp;a&nbsp;!==&nbsp;'undefined'&nbsp;?&nbsp;a&nbsp;:&nbsp;42; &nbsp;&nbsp;b&nbsp;=&nbsp;typeof&nbsp;b&nbsp;!==&nbsp;'undefined'&nbsp;?&nbsp;b&nbsp;:&nbsp;'default_b'; &nbsp;&nbsp;...}
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答