首页 > 解决方案 > 这个逻辑和遵循严格相等的javascript习语的目的是什么?

问题描述

我在lodash 存储库中闲逛,发现以下内容:

if (isCommon && computed === computed) {
     <stuff>
}

这里,

我的问题

为什么该if条款不简单if (isCommon)

详细说明(一种可能的答案)

Mozilla 运算符优先级表告诉我

这大概意味着 内部的布尔检查if被解析为isCommon && (computed === computed).

大多数情况下,第二个手臂将是真实的,即使对于像orx === x这样的时髦“值”也是如此。我能想到的唯一其他选择是将函数应用于生产可能会产生NaN。在这种情况下,严格相等将评估为假;在:nullundefinediterateevaluecomputednode

> x=Math.abs("boo"); 1 && x === x
false

是这个吗?该条款的有点奇怪(对我而言)形状是否if旨在防止这种可能性?

标签: javascriptlodashoperator-precedence

解决方案


推荐阅读