我在另一个帖子中找到了thoose示例,但我没有得到它.
0 == '0' // true
Run Code Online (Sandbox Code Playgroud)
0到左边我转换为false(唯一的数字).右边是一个非空字符串,它将转换为true.那么怎么可以假==真 - >真
我错过了什么?
编辑:很多抱怨.我不明白我的具体情况.(顶部的链接正是我复制和粘贴此案例的地方)
以下是您的问题的正式答案(引用部分,底部链接)和分析:
如果操作数不是同一类型,则等于运算符会转换操作数,然后应用严格比较.如果操作数是数字或布尔值,操作数将尽可能转换为数字; 否则,如果任一操作数是字符串,则尽可能将字符串操作数转换为数字.如果两个操作数都是对象,则JavaScript比较内部引用,当操作数引用内存中的同一对象时,这些内部引用相等.句法
x == y
例子
3 == 3 //是的
"3"== 3 //是的
3 =='3'//是的
这意味着,正如我读到的那样,前3个(整数)被转换为字符串以满足比较,因此它变为'3' == '3'真实,与零的情况相同.
注意:我假设转换可能在不同的JS引擎中有所不同,尽管它们必须在ECMAScript规范下统一 - http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.3(引用@Derek朕会功夫).这个假设是基于主观和命令性的观点,并非所有浏览器和JavaScript引擎都符合ECMAScript.
如果操作数严格相等(见上文)且没有类型转换,则identity运算符返回true.
在答案结尾处在同一资源上找到的标识/严格相等(===)将跳过自动类型转换(如上所述)并且还将执行类型检查,以确保我们具有完全匹配,即上面的表达式会失败,例如:
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
| 归档时间: |
|
| 查看次数: |
3604 次 |
| 最近记录: |