Backbone.js 在BackboneJs中迭代集合是否比forEach更快?

Backbone.js 在BackboneJs中迭代集合是否比forEach更快?,backbone.js,underscore.js,Backbone.js,Underscore.js,遍历集合:尽管可以使用简单的for循环 按如下方式迭代您的集合: 从性能角度看,哪一个更好?如果您查看,您可以看到它测试本机forEach,然后选择使用for循环,而不是使用for循环。因此,在支持本机forEach的浏览器上,如果有两个选项,下划线将更快,并且在所有其他浏览器中的运行时间几乎相同 var each = _.each = _.forEach = function(obj, iterator, context) { if (obj == null) return obj;

遍历集合:尽管可以使用简单的for循环 按如下方式迭代您的集合:

从性能角度看,哪一个更好?如果您查看,您可以看到它测试本机forEach,然后选择使用for循环,而不是使用for循环。因此,在支持本机forEach的浏览器上,如果有两个选项,下划线将更快,并且在所有其他浏览器中的运行时间几乎相同

var each = _.each = _.forEach = function(obj, iterator, context) {
    if (obj == null) return obj;
    if (nativeForEach && obj.forEach === nativeForEach) {
      obj.forEach(iterator, context);
    } else if (obj.length === +obj.length) {
      for (var i = 0, length = obj.length; i < length; i++) {
        if (iterator.call(context, obj[i], i, obj) === breaker) return;
      }
    } else {
      var keys = _.keys(obj);
      for (var i = 0, length = keys.length; i < length; i++) {
        if (iterator.call(context, obj[keys[i]], keys[i], obj) === breaker) return;
      }
    }
    return obj;
  };
var each=\ each=\ forEach=函数(obj、迭代器、上下文){
如果(obj==null)返回obj;
if(nativeForEach&&obj.forEach===nativeForEach){
forEach(迭代器,上下文);
}否则如果(对象长度===+对象长度){
对于(变量i=0,长度=obj.length;i
请参见:谢谢!如果是关于性能的,我会选择它作为最佳答案,我相信默认情况下缓存数组长度是一种很好的做法。如下所示:
(i=0,max=myarray.length;i
)。
//using forEach
myLibrary.forEach(function(model){
console.log('Book is called ' + model.get('name'));
});
var each = _.each = _.forEach = function(obj, iterator, context) {
    if (obj == null) return obj;
    if (nativeForEach && obj.forEach === nativeForEach) {
      obj.forEach(iterator, context);
    } else if (obj.length === +obj.length) {
      for (var i = 0, length = obj.length; i < length; i++) {
        if (iterator.call(context, obj[i], i, obj) === breaker) return;
      }
    } else {
      var keys = _.keys(obj);
      for (var i = 0, length = keys.length; i < length; i++) {
        if (iterator.call(context, obj[keys[i]], keys[i], obj) === breaker) return;
      }
    }
    return obj;
  };