如果for和forEach都是同步的,为什么forEach循环不起作用并且在这种情况下总是返回false?我一直都在考虑它太早,我犯了一个明显的错误。两个案例都说他们找到了一场比赛:
var items = [{
Code: 'BLAH',
ItemID: 'FOO'
}];
console.log(findItem('BLAH')); // FOO
console.log(findItem2('BLAH')); // false
function findItem(sku) {
for(var i in items) {
if(items[i].Code === sku) {
console.log('Match found - for'):
return items[i].ItemID;
}
}
return false;
}
function findItem2(sku) {
items.forEach(function(item) {
if(item.Code === sku) {
console.log('Match found - forEach'):
return item.ItemID;
}
});
return false;
}
答案 0 :(得分:3)
您传递给return
的回调中的.forEach()
只是终止该函数调用,而不是" findItem2"呼叫。换句话说,.forEach()
机制本身已经调用了你传递它的函数,而你的return
语句只是从那里返回;整个过程仍在继续。没有什么能够关注你返回的价值。
这是普通for
循环可能更清晰的情况。某些函数框架可能提供.forEach()
之类的东西,专门用于查找满足给定条件的列表中第一个元素的任务。