你能从 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
答案 0 :(得分:0)
与您的陈述的区别在于,您的result
的最后一个值!!iterator.call
的值{} result
false
iterator.call
false
result
{1}}至少返回一次true
。
原始代码iterator.call
仅在{{1}}为所有次迭代返回true时才为{{1}}。