表达式
true === 1
在 javascript 中的计算结果为 false,因为 true
和 1
的数据类型不同。前者是布尔类型,后者是数字。但是,当您检查 true
和 !0
之间是否严格相等时,相等评估将返回 true。这是因为 !0
返回布尔值而不是数字。
为什么 JavaScript 要将“0”从数字类型转换为布尔类型?
true === !0 应该为 true,因为首先 !0 被评估为 true,然后严格相等运算符返回 true。它可能会返回 false,只是因为某些浏览器存在导致错误评估的错误。您可以通过用括号将 !0 括起来来解决此问题:
true === (!0)
我正在使用 Edge,当我在不带括号的控制台中尝试此操作时,它返回 true。