0

当您迭代用户/引擎定义的函数时,实现 for 循环的“中断”功能模拟的最佳方法是什么?

foreach([0,1,2,3,4],function(n){
    console.log(n);
    if (n==2)
        break;});

我曾想过以一种在函数返回“false”时会中断的方式实现 foreach - 但我想听听关于通常如何完成的想法。

4

1 回答 1

7

returningfalse是最常见的方法。这就是 jQuery 的迭代器函数的.each()作用:

我们可以通过使回调函数返回false来在特定迭代中打破 $.each() 循环。返回非 false 与 for 循环中的 continue 语句相同;它将立即跳到下一次迭代。

及其非常简化的实现:

each: function( object, callback ) {
  var i = 0, length = object.length,
  for ( var value = object[0]; 
        i < length && callback.call( value, i, value ) !== false; // break if false is returned by the callback 
        value = object[++i] ) {}
  return object;
}
于 2012-09-02T17:35:04.933 回答