【问题标题】:Should I use == or === In Javascript? [duplicate]我应该在 Javascript 中使用 == 还是 ===? [复制]
【发布时间】:2013-07-12 15:57:16
【问题描述】:

我正在使用 codecademy 学习 Javascript,并且我正在做一些比较,对于我的代码我做了:

`console.log(1 == 2)`

它返回了False。 我也做过:

`console.log(2*2 === 3)`

这也返回了False。 为了检查我没有犯错,我做了:

`console.log(1 == 1)`

然后返回True 说明告诉我=== 表示等于。

使用== 代替=== 有什么问题吗?而且,哪个更好用,为什么?

感谢您能给我的任何帮助!

【问题讨论】:

  • 抱歉重复了,我真的应该多搜索一下,我不介意你把它标记为duplicarte还是关闭它

标签: javascript comparison boolean equals console.log


【解决方案1】:

使用 == 只比较值,=== 也比较变量的类型。

1 == 1 -> true
1 == "1" -> true
1 === 1 -> true
1 === "1" -> false, because 1 is an integer and "1" is a string.

如果必须确定函数返回 0 还是 false,则需要 ===,因为 0 == false 为 true,但 0 === false 为 false。

【讨论】:

  • 他们都比较类型。不同之处在于== 强制当类型不匹配时将值转换为匹配类型。
  • 但这没什么区别,不是吗?
  • 只有正确理解发生了什么。假设=== 比较类型,并找到不同的类型,所以它只返回false。但是如果== 不比较类型,而只比较值,那么这些值仍然不匹配。发生的情况是它们都从比较类型开始,并且当类型匹配时它们的行为相同。但是当类型不匹配时,=== 放弃了,但== 开始了类型强制的过程,每次更改类型时都会进行递归比较。最终,操作数被归约为相同的类型,你得到你的值比较。
【解决方案2】:

这真的取决于情况。通常建议使用===,因为在大多数情况下这是正确的选择。

== 表示相似,而
=== 表示相等。这意味着它考虑了对象类型。

示例

'1' == 1 是真的

1 == 1 是真的

'1' === 1 为假

1 === 1 是真的

使用== 时,1 是数字还是字符串都没有关系。

【讨论】:

    【解决方案3】:

    http://www.w3schools.com/js/js_comparisons.asp

    == is equal to || x==8 equals false
    
    === is exactly equal to (value and type) || x==="5" false
    
    meaning that 5==="5" false; and 5===5 true
    

    毕竟,这取决于你想要哪种类型的比较。

    【讨论】:

      猜你喜欢
      • 2013-01-30
      • 2011-08-08
      • 2020-08-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-31
      • 1970-01-01
      • 2019-08-06
      相关资源
      最近更新 更多