Jshint:循环中的匿名函数(问题)
Jshint: Anonmyous function within a loop (Issue)
我的问题类似于JSHint不允许我在"for"循环中使用"forEach"
我们当前项目中大约有 2k JS 行,最近包含在检查jshint
,一个常见的问题是以下示例代码会抛出
不要在循环中创建函数。
示例代码:
var s1 = '12345'.split('');
var oo = { a: s1, b: s1, c: s1};
function odd(obj){
var tmp = [];
for (var key in obj){
obj[key].forEach( function(val){
if(val%2>0) tmp.push(val);
});
}
return tmp;
}
odd(oo);
我的解决方法是:
function odd(obj){
var tmp = [], tmpFn;
tmpFn = function(val){
if(val%2>0) tmp.push(val);
};
for (var key in obj){
obj[key].forEach(tmpFn);
}
return tmp;
}
我已经检查过,这有效,但我不确定这是否是修复旧代码的正确方法,此修复程序是否会有任何不必要的副作用? 还是我应该忽略警告,因为旧代码看起来更干净?
编辑:我错过了一个for循环,用它更新了示例代码。
不要忽略该警告,确实没有必要为循环的每次运行创建一个新函数。
这种方法更好,只要你留在带有定义的 odd() 函数内,它就不会有任何副作用,它会看到与传递给 forEach 的匿名函数相同的变量状态。
编辑:即使您决定忽略该警告,也要始终如一地执行此操作 - 要么使用不认为这是一个错误的 jshint 配置,要么添加 jshint 注释以在代码中暂时禁用此警告类型(使用 jshint --verbose 获取用于选择性切换的警告代码),不要让任何显示的 jshint 警告在没有通知的情况下消失, 这首先违背了进行代码分析的目的。
相关文章:
- Javascript时间函数问题
- Javascript Array 的求和函数问题
- Jshint:循环中的匿名函数(问题)
- WordPress FAQ 手风琴自定义帖子类型 - 匿名函数问题.
- JavaScript 中的滚动函数问题
- Google JS API: gapi.auth.signIn 回调函数问题
- Javascript onclick 函数问题
- Javascript中的循环和函数问题
- 达到 10 次摘要迭代,中止(作用域函数问题)
- 洛达什 _.合并函数问题
- jQuery .unload() 函数问题,仅在单击特定链接时激活
- 回调函数问题
- Javascript语法函数问题
- Ajax 完整函数问题
- TypeError getElementsByTagName不是函数问题
- Jquery自定义函数问题
- angularjs编译指令中的函数问题
- JQuery-JNotify-点击函数问题
- Node Js中的回调函数问题
- javascript中的ie8拆分函数问题