aze*_*ro0 8 javascript node.js
创建一个在nodejs中接受可选参数的函数的最佳方法是什么?
例如,我知道这种方法: -
function optionalArguments(a,b){
var a = a || "nothing";
var b = b || "nothing";
}
Run Code Online (Sandbox Code Playgroud)
但在这种情况下,如果我这样做:
optionalArguments(FALSE,FALSE)
虽然我已经通过了一个论证,但是a和b都返回"没有".
当我调用这样的函数时,我也得到意外的令牌错误:
optionalArguments( "XXX");
是否有更好的或标准的方法来处理nodejs中的可选参数?
任何帮助表示赞赏.提前致谢.
wat*_*ova 23
如果您使用的是Node.js v6(或更高版本),则可以访问默认参数.
function optionalArguments(a="nothing", b="nothing") {
return `a: ${a}, b: ${b}`;
}
Run Code Online (Sandbox Code Playgroud)
然后
optionalArguments(false, false) // 'a: false, b: false'
optionalArguments('this') // 'a: this, b: nothing'
optionalArguments() // 'a: nothing, b: nothing'
optionalArguments(undefined,'that') // 'a: nothing, b: that'
Run Code Online (Sandbox Code Playgroud)
Den*_*ret 11
你完全喜欢客户端javascript.
你建议的方式确实有效,但正如你所注意到的那样,当可以省略的论点不是最后一个时,就会感到痛苦.
在这种情况下,常用的是"选项"对象:
function optionalArguments(options){
var a = options.a || "nothing";
var b = options.b || "nothing";
}
Run Code Online (Sandbox Code Playgroud)
注意这||很危险.如果你希望能够设置参数,像false,"",0,NaN,null,你必须做这样的:
function optionalArguments(options){
var a = options.a !== undefined ? options.a : "nothing";
var b = options.b !== undefined ? options.b : "nothing";
}
Run Code Online (Sandbox Code Playgroud)
如果你这么做的话,实用功能可以很方便:
function opt(options, name, default){
return options && options[name]!==undefined ? options[name] : default;
}
function optionalArguments(options){
var a = opt(options, 'a', "nothing");
var b = opt(options, 'b', "nothing");
}
Run Code Online (Sandbox Code Playgroud)
这样你甚至可以调用你的函数
optionalArguments();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
40598 次 |
| 最近记录: |