javascript - 从 underscore.js 解释这一行

标签 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(...) 转换为 bool 值?例如他想做的只是

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

最佳答案

与您的声明的不同之处在于,您将 !!iterator.call 的最后一个值的值赋予 result 而在原始代码中 resultfalse 一旦 iterator.call 返回 false 至少一次迭代。

在原始代码中,只有当 iterator.call所有 次迭代返回 true 时,result 才为 true

关于javascript - 从 underscore.js 解释这一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18673028/

相关文章:

javascript - 无法在 'postMessage' : 2 arguments required, 上执行 'Window' 但只有 1 个存在

javascript - 使用 HTML、CSS 和 JS 构造一个 "3D"的建筑

javascript - React Native DrawerLayoutAndroid 和 Navigator 之间的冲突

javascript - 将字符串转换为 Dom 节点 javascript?

javascript - 对 Backbone 进行子类化。查看子类并保留事件

javascript - 选择 div 的特定区域

javascript - 展平这个数组的简单方法?

javascript - 使用下划线过滤 JSON

javascript - 我如何像 Elm 那样在 JS 中传递函数?

javascript - 如何使用 underscorejs 操作 DOM 元素的属性?