myT*_*yTD 58 javascript jshint
我无法解决JSHint的错误消息.这是我正在使用的循环:
for (i = 0; i < Collection.length; i += 4) {
data.push({
items : Collection.slice(i, i + 4).map(function(item) {
return {
id: item[0],
title: item[1],
};
})
});
}
Run Code Online (Sandbox Code Playgroud)
Jam*_*ice 112
您可以在循环外部移动该函数并将其引用传递给map
:
function mapCallback(item) {
return {
id : item[0],
title : item[1],
};
}
for (i = 0; i < Collection.length; i += 4) {
data.push({
items: Collection.slice(i, i + 4).map(mapCallback)
});
}
Run Code Online (Sandbox Code Playgroud)
或者,您可以使用JSHint指令忽略循环内的函数表达式.只需将其放在相关文件的顶部:
/*jshint loopfunc: true */
Run Code Online (Sandbox Code Playgroud)
在循环中声明函数是混乱的,并且可能容易出错.相反,定义一次函数,然后进入循环.
var objMaker = function(item) {
return {
id : item[0],
title : item[1],
};
};
for (i = 0; i < Collection.length; i += 4) {
data.push({
items : Collection.slice(i, i + 4).map(objMaker)
});
}
Run Code Online (Sandbox Code Playgroud)
人们说“在循环中声明一个函数是混乱的并且可能容易出错”,但是循环中的函数是直接在例如Array.prototype.forEach方法中指示的。仅仅因为“函数”这个词理论上应该意味着在每次forEach调用中重新定义它并不意味着它实际上每次都由 Javascript 引擎定义。
外循环也是如此,因为引擎对指令进行“惰性”处理。如果没有真正改变它,他们不会重新定义整个forEach / Map /etc 构造指令,他们只会向它提供新的参数。
古老的 JS 引擎对这些简单的事情以及代码上下文一无所知的时代已经一去不复返了。然而,我们收到了这个古老的警告,它是在函数还不能像forEach或Map的情况下那样作为参数传递时构想的。
归档时间: |
|
查看次数: |
44381 次 |
最近记录: |