javascript - 为什么 ""== "0"在 JavaScript 中是 false ?

标签 javascript

我试图理解这里的一些东西,解释自己的最好方法是举一个例子:

"" == false
// true

"0" == false
// true

false == false
// true

但是这里发生了什么?

"" == "0"
// false 

如果 "" 计算结果为 false 并且 "0" 计算结果为 false,则逻辑预测它是就像我写的一样 false == false

我确实意识到我正在尝试在这里比较两个字符串,但是语言如何知道 "a"== "b"""== "0 “?在这种情况下,强制是如何发生的?

最佳答案

Why “” == “0” is false in javascript?

因为操作数是两个内容不同的字符串。仅当操作数的数据类型不同时才会发生类型强制。

相关问题:

<小时/>

If "" evaluates to false and "0" evaluates to false the logic predicts that it is the same as i write false == false

让我们看看实际比较是如何解决的:

""== false 被强制为 0 == 0

"0"== false 被强制为 0 == 0

false == false:相同的数据类型,因此直接比较值

如您所见,"0" 不会“评估”为 false,它会转换为整数,并且值被比较。 ("" 的计算结果为 false(空字符串),但转换为数字时,结果为 0)。

将值转换为 bool 值和将值与 bool 值进行比较之间存在很大差异。最明显的例子:!!"0" (true) 和 "0"== false (true) .

当您使用松散比较 (==) 来比较不同数据类型的值时,它们始终会被强制转换为数字(如果您将对象与字符串进行比较,则可能会转换为字符串)。

看看 specification有关比较算法的更多信息。

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

相关文章:

javascript - 脚本在 html 正文标签之外不工作

javascript - 使用数组方法时函数返回方括号

javascript - 如何在不使用 POST/GET/FORM 的 onclick 事件 HTML 中设置 PHP session

javascript - 电子商务网站上的 Facebook 'Like' 按钮

javascript - 如何限制 jQuery 可选倍数以选择最多 5 个范围?

javascript - 如何将音频数据数组转换为 wav 文件?

JavaScript - setDate 覆盖预分配变量的值

javascript - 如何在 Blogger 中隐藏 javascript 代码以防止检查页面元素?

javascript - 如何比较 jquery 中同一数组中存在的两个对象

javascript - Sails js 未声明的变量 : NaN when modelling associations