javascript - 这个逻辑和遵循严格相等的javascript习语的目的是什么?
问题描述
我在lodash 存储库中闲逛,发现以下内容:
if (isCommon && computed === computed) {
<stuff>
}
这里,
isCommon
是一个布尔值,最初设置为true
,然后false
根据某些检查有条件地重置为;- while
computed
是通过遍历数组 (for (let value of array)
) 并可能将函数iteratee
应用于当前值而获得的value
。
我的问题:
为什么该if
条款不简单if (isCommon)
?
详细说明(一种可能的答案)
Mozilla
运算符优先级表告诉我
- 严格相等
===
的优先级为 11, - 高于
&&
运算符的优先级 7
这大概意味着 内部的布尔检查if
被解析为isCommon && (computed === computed)
.
大多数情况下,第二个手臂将是真实的,即使对于像orx === x
这样的时髦“值”也是如此。我能想到的唯一其他选择是将函数应用于生产可能会产生NaN。在这种情况下,严格相等将评估为假;在:null
undefined
iteratee
value
computed
node
> x=Math.abs("boo"); 1 && x === x
false
是这个吗?该条款的有点奇怪(对我而言)形状是否if
旨在防止这种可能性?
解决方案
推荐阅读
- database - 执行请求的操作时遇到错误:ORA-00604:
- tcp - 如何通过 Tor 浏览器始终保持登录 Telegram?
- database - dax函数中的power bi整列
- apache-spark - 如何加载没有分区名称(在目录名称中)的分区镶木地板数据集?
- entity-framework - .net 核心授权角色不使用魔术字符串
- reactjs - 用玩笑模拟两个函数
- python - 在 Python 的 statsmodels 中初始化模型
- sql-server - SQL 根据 3 列值获取行
- javascript - 当语言环境设置为 pl 时,Antd datepicker 将星期日显示为一周的第一天
- ms-access - 访问前端和后端同时被用户锁定