rob*_*yaw 6 javascript parameters jslint
所有,
我使用JSLint来验证我的JS文件.在我最近的项目中,我使用以下格式为许多JavaScript函数设置默认值(在此处进一步详述):
function(a, b, option) {
option = arguments.length > 2 ? option : "some default value";
// ...
}
Run Code Online (Sandbox Code Playgroud)
但是,这会导致最新版本的JSLint产生以下错误:
"Do not mutate parameter 'option' when using 'arguments'."
Run Code Online (Sandbox Code Playgroud)
我知道使用更常用的方法来分配默认值(即option = option || {};)可以解决错误; 但是,如果我打算传递一个falsey值,这将产生不正确的行为option.
引入新变量是解决此问题的唯一方法吗?例如:
var option2 = arguments.length > 2 ? option : "some default value";
Run Code Online (Sandbox Code Playgroud)
我猜JSLint会警告你,因为你试图通过使用带有arguments关键字的检查来修改其中一个输入参数.但是,JSHint在尝试代码时确实给了我任何警告.
解决问题的方法是检查是否option已定义,这样就可以通过发送有价值的值来解决问题:
function(a, b, option) {
if(typeof option === "undefined") {
option = "some default value";
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
如果您发现typeof每次编写此检查很麻烦,请创建一个isDef函数:
function isDef(param) {
return typeof param !== "undefined";
}
function(a, b, option) {
option = isDef(option) ? option : "some default value";
// ...
}
Run Code Online (Sandbox Code Playgroud)
// Simon A.
| 归档时间: |
|
| 查看次数: |
1109 次 |
| 最近记录: |