JavaScript

时间:2018-01-20 10:47:43

标签: javascript equality

===运算符不执行隐式类型转换,因此即使值相等但类型不同===,也只会返回false。

在严格的相等比较中,首先执行什么操作?像:

  1. 检查左侧操作数和左侧操作数的数据类型。右侧操作数首先

    5 === '5' // Return false as, number !== string

  2. 在检查两个操作数的数据类型之后,首先比较两个操作数值。

    5 === 5 // Return true as, 5 === 5 (Both value is same)

    现在是否会检查数据类型?

2 个答案:

答案 0 :(得分:1)

  1. 检查===的第一步是“操作数的类型是否相同?”。如果答案为“否”,则不再进行进一步检查,结果为false

  2. 其次,如果类型相同,则它与==完全相同,这意味着检查值是否相等。

答案 1 :(得分:1)

来自mozilla docs

  

严格相等性比较两个相等的值。在比较之前,这两个值都不会隐式转换为其他值。 如果值具有不同的类型,则认为这些值不相等。否则,如果值具有相同的类型且不是数字,则如果它们具有相同的值,则它们被认为是相等的。最后,如果两个值都是数字,如果它们都不是NaN则认为它们是相等的并且是相同的值,或者如果一个是+ 0而一个是-0。

因此,===运算符首先检查类型,如果它们相等,则检查它们的值。如果值相同,则返回true,否则返回false。如果类型不匹配,则返回false而不检查值。