你能给我解释一下来自 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(...)
转换为 bool 值?例如他想做的只是
if (!(result = !!iterator.call(context, value, index, list))) // "!!" used
最佳答案
与您的声明的不同之处在于,您将 !!iterator.call
的最后一个值的值赋予 result
而在原始代码中 result
为 false
一旦 iterator.call
返回 false
至少一次迭代。
在原始代码中,只有当 iterator.call
对所有 次迭代返回 true 时,result
才为 true
。
关于javascript - 从 underscore.js 解释这一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18673028/