从underscore.js解释这一行

时间:2013-09-07 11:55:34

标签: javascript underscore.js

你能从 underscore.js 的声明中向我解释一句话:

_.every = _.all = function(obj, iterator, context) {
    var result = true;

    each(obj, function(value, index, list) {
--->  if (!(result = result && iterator.call(context, value, index, list)))
          return breaker;
    });

    return !!result;
};

我不理解这一行(result = result && iterator.call...为什么他需要result在平等的正确部分。作者是否只想将iterator.call(...)转换为布尔值?例如,他想做的只是

if (!(result = !!iterator.call(context, value, index, list))) // "!!" used

1 个答案:

答案 0 :(得分:0)

与您的陈述的区别在于,您的result的最后一个值!!iterator.call的值{} result false iterator.call false result {1}}至少返回一次true

原始代码iterator.call仅在{{1}}为所有次迭代返回true时才为{{1}}。