为可选参数分配默认值的好方法是什么?
我正在玩JavaScript中的可选参数,以及如果未指定参数则分配默认值的想法.我的方法接受两个参数,后者我认为是可选的,如果未指定则默认为false.我的方法看起来像这样......
// selects the item, appropriately updating any siblings
// item to select [, toggle on / off]
this.selectItem = function(item, toggle)
{
toggle = toggle && typeof toggle === 'boolean';
if (toggle)
{
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
在此jsFiddle上运行一些测试后,使用以下主体进行默认值分配:
function checkParamIsBoolean(param)
{
param = param && typeof param === 'boolean';
}
checkParamIsBoolean('me'); // boolean
checkParamIsBoolean([]); // boolean
checkParamIsBoolean(true); // boolean
checkParamIsBoolean(false); // boolean
checkParamIsBoolean(1 == 1); // boolean
checkParamIsBoolean(1); // boolean
checkParamIsBoolean(null); // object
checkParamIsBoolean(undefined); // undefined
?
Run Code Online (Sandbox Code Playgroud)
尽可能地,结果会有所不同,并且不是所希望的.
null= false
undefined=false
null= object
undefined=undefined
是否有任何替代方法可以将默认值分配给可选参数(如果未指定); 最好是_toggle用作参数然后var toggle在方法中分配值吗?
Mar*_*mro 23
更好的解决方案是使用包装在对象中的命名参数.它可以保持代码清洁,并在复杂功能的情况下防止错误(具有许多默认和非默认参数).否则你需要记住参数的顺序,并根据存在的参数类型(这就是你要做的事情)分配默认值.
该方法是传递params jQuery和jQuery插件的主要方法.
function test(options) {
// set up default options
var defaults = {
param1: 'test',
param2: 100
};
// combine options with default values
var options = $.extend({}, defaults, options); // If you're not using jQuery you need different function here
alert(options.param1)
alert(options.param2)
}
test({'param2': 200}) // Call the function with just the second param
Run Code Online (Sandbox Code Playgroud)
sbg*_*ran 14
您可以在代码中使用此构造作为可选参数:
//...
optionalParam = optionalParam || 'some default value';
Run Code Online (Sandbox Code Playgroud)
在您的具体实践中,它将是这样的:
this.selectItem = function(item, toggle)
{
toggle = toggle || false;
// ...
}
Run Code Online (Sandbox Code Playgroud)
但在你的情况下你可以直接在if语句中使用toogle(可选参数)(因为你只想检查它的存在.或者你可以选择强制执行布尔值这样的toogle = !!toogle(双重否定).
| 归档时间: |
|
| 查看次数: |
19838 次 |
| 最近记录: |