为vs每个问题

如果for和forEach都是同步的,为什么forEach循环不工作,在这种情况下总是返回false? 我一直在想,这个早晨太早了,我犯了一个明显的错误。 两种情况都说他们find了一个匹配:

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; } 

您传递给.forEach()的callback中的return只是终止该函数调用,而不是“findItem2”调用。 换句话说, .forEach()机制本身已经调用了你传递它的函数,而你的return语句只是从中返回; 整个过程仍在继续。 没有任何东西能够关注你回报的价值。

这是一个平原for循环可能更清晰一些的情况。 一些函数框架可能提供了类似.forEach()专门用于在列表中查找满足给定条件的第一个元素的任务。