javascript - 为什么 !"0"== "0"为真?

标签 javascript

我正在使用 JavaScript,并且遇到了这个错误,原因是“then”句子中输入了“0”和!“0”。当我在控制台中尝试时,我看到:

!"0" == "0" -> true

为什么会发生这种情况?

最佳答案

!"0" 将字符串 "0" 转换为 bool 值,并取反。因此,由于 "0" 为真(唯一的假字符串是空字符串),因此它的否定是 bool 值 false。需要明确的是:

!"0" 转换为 false

由于我们将 bool 值 false 与字符串 "0" 进行比较,因此 javascript 会将这两个值转换为数字。请参阅 this documentation 中的表格看看哪些类型在比较时被转换为什么。您会注意到,对于 bool 值和字符串,两者都会更改为数字,然后进行比较。

总而言之,我们有 !"0",其计算结果为 false。然后我们将其与另一个字符串进行比较:“0”。因为一个是 bool 值,另一个是字符串,所以它们会转换为数字。 false 的数字转换为 0"0" 的数字转换为 0,两者相等。这样我们就得到了你看到的结果。

关于javascript - 为什么 !"0"== "0"为真?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48387423/

相关文章:

javascript - 弹出 :hover cannot be dismissed with blur()

javascript - 覆盖来自 cypress.env.json 的配置变量

javascript - Canvas 0px 线条画 (html5)

javascript - jQuery 验证不适用于 Web 表单

javascript - 函数的回调函数是如何工作的

javascript - 使用 three.js 加载 OBJMTL 对象并获取 Mesh 的几何参数

JavaFX Web View 中的 Javascript

javascript - 需要在更改下拉列表中突出显示区域坐标

javascript - 如何从html页面调用python命令?

javascript - 编写适用于客户端 javascript 和服务器端 NodeJs 模块的 javascript 代码