javascript代码:
for (j = 0; j < array.length; j ++) {
if (
array[j].some(
function(word) {
return word.indexOf(array1[i]) > -1;
}
)
) {
makeSomething();
}
}
在Functions declared within loops referencing an outer scoped variable may lead to confusing semantics. (array1)
中产生jshint.com
警告。
实际上可以。
真的有问题吗?
应该怎么写?
答案 0 :(得分:2)
不,这不是问题。警告缺少原因:
如果回调将被异步回调,那么将会令人困惑:
for(i = 0; i < 10; i++) {
setTimeout(function() {
console.log(i); // guess what this logs
});
}
但是您实际上应该始终声明变量,并且为此始终使用let
或const
for (let j = 0; j < array.length; j ++) {
这将使警告消失,并且还将修复上面的示例(并且避免使用probably confusing implicit global)。
答案 1 :(得分:0)
您可以在for范围之外声明该函数,并在避免警告的情况下达到相同的结果。
const functionName = function(word) {
return word.indexOf(array1[i]) > -1;
}
for (let j = 0; j < array.length; j ++) {
if (array[j].some(functionName)) {
makeSomething();
}
}
答案 2 :(得分:-1)
你只需要在for循环外声明函数,然后在循环内调用它作为guest