相等运算符转换类型不同的操作数,然后应用严格比较。如果其中一个操作数是数字或布尔值,则尽可能将操作数转换为数字; else如果其中一个操作数是字符串,则字符串操作数将尽可能转换为数字。如果两个操作数都是对象,则JavaScript将比较内部引用,当操作数引用内存中的同一对象时,内部引用是否相等。语法 x == y 示例 3 == 3//真 "3"== 3//真 3 =='3 '//真 这意味着,正如我所读到的,前3(整数)被转换为字符串以满足比较,因此它成为'3' == '3',这是真的,与零的情况相同。
NOTE: I assume that the converion may vary in different JS engines, although they have to be unified under ECMAScript specifiction - http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.3 (quoted @Derek朕會功夫). This assumption is made on a subjective and imperative opinion that not all browsers and JavaScript engines out there are ECMAScript compliant.
2条答案
按热度按时间ymzxtsji1#
以下是对您的问题的官方答复(引用部分,链接在底部)和分析:
相等(==)
相等运算符转换类型不同的操作数,然后应用严格比较。如果其中一个操作数是数字或布尔值,则尽可能将操作数转换为数字; else如果其中一个操作数是字符串,则字符串操作数将尽可能转换为数字。如果两个操作数都是对象,则JavaScript将比较内部引用,当操作数引用内存中的同一对象时,内部引用是否相等。语法
x == y
示例
3 == 3//真
"3"== 3//真
3 =='3 '//真
这意味着,正如我所读到的,前3(整数)被转换为字符串以满足比较,因此它成为
'3' == '3'
,这是真的,与零的情况相同。NOTE: I assume that the converion may vary in different JS engines, although they have to be unified under ECMAScript specifiction - http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.3 (quoted @Derek朕會功夫). This assumption is made on a subjective and imperative opinion that not all browsers and JavaScript engines out there are ECMAScript compliant.
标识/严格相等(===)
如果操作数严格相等(见上文)且没有类型转换,则恒等运算符返回true。
在答案的结尾找到的**Identity/strict equality(===)**将跳过自动类型转换(如上所述),并将执行类型检查,以确保我们有精确匹配,即上面的表达式将在如下情况下失败:
typeof(int) == typeof(string)
这是大多数弱类型语言中的常用运算符:
http://en.wikipedia.org/wiki/Strong_and_weak_typing
我想说的是,一个人应该确定一个函数/方法将返回什么,如果这样的函数/方法将要返回数字(整数/浮点数),它应该坚持到最后,否则相反的做法可能会削减你的头有很多原因,一个躺在这个问题。
以上对于其他弱类型语言也是有效的,例如PHP。
阅读更多内容,请参考第二个标题(等式运算符):
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators
roqulrg32#
当你使用
==
的时候,JavaScript会非常努力地把你要比较的两个东西转换成相同的类型,在这种情况下,0
会被转换成'0'
来进行比较,然后得到true
。您可以使用
===
来获得所需的结果,它不会进行任何类型强制,是最佳实践。相等运算符
相等运算符转换类型不同的操作数,然后应用严格比较。如果其中一个操作数是数字或布尔值,则尽可能将操作数转换为数字; else如果其中一个操作数是字符串,则字符串操作数将尽可能转换为数字。如果两个操作数都是对象,则JavaScript将比较内部引用,当操作数引用内存中的同一对象时,内部引用是否相等。
来源:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators
JavaScirpt表等式:http://dorey.github.io/JavaScript-Equality-Table/