为什么被迭代的对象要通过回调传递回

Why is the object being iterated passed back through the callback?

本文关键字:回调 迭代 对象 为什么      更新时间:2023-09-26

这是一个由uncore封装到函数中的常见习惯用法。

_.each(obj1, function(val, key, context, obj2){
});

回调函数第四个参数obj2的目的是什么?这是要循环遍历的对象,因此它应该始终在外部作用域中作为obj1可用。

是否有需要通过obj2访问obj1的例子?

我想了解obj2是什么。下面是确切的代码行——第83行。

if (iterator.call(context, obj[i], i, obj) === breaker) return;

如果您将引用传递给命名函数作为回调,obj1可能不可用:

function my_callback(val, key, context, obj2) {
    ...
}
function do_stuff() {
    var obj1 = ...
    _.each(obj1, my_callback);
}

回调函数第四个参数obj2的目的是什么?这是要循环遍历的对象,因此它应该始终在外部作用域中可用,如obj1

这样您就可以重用相同的函数来循环遍历多个对象,并且仍然可以访问函数内迭代的对象。您使用的函数很可能在其他地方定义。您可以有一个用于各种迭代目的的函数库。很少想知道对象是什么(因此它到目前为止在参数列表中),但也有用例。