当我们比较10 ==“10”。 JavaScript给出的输出为真。这是否意味着第一个操作数10(Number
)被转换为“10”(String
),反之亦然?如何在JavaScript中使用10 ==“10”的情况下工作==?
回答
在此document10 == "10"
使用表意味着代码表现为A === ToNumber(B)
即字符串被转换为数字
做的双等于尝试是,将其转换两个操作数常见的数据类型。它会尝试将这两个值转换为整数。如果其中一个被转换为int,则两者都将被转换并且输出将被返回。如果两者均失败,则会执行字符串比较。
console.log(10 == "10")
console.log(true == "true")
console.log({} == '[object Object]')
原因第二返回false
是因为parseInt(true)
将返回1 parseInt('true')
将返回NaN
你可以阅读以下链接算法:The Abstract Equality Comparison Algorithm
==
指检查为值。
===
表示检查值以及类型。
所以当比较10 =='10'
时,JavaScript引擎只检查值,因此true
。
10 === '10'
will yeild false
。 阅读mozilla的equality comparison了解更多信息。
==
运营商将在之后进行任何必要的类型转换后进行比较。 ===
运营商不会做转换,所以如果两个值不是相同的类型===
将简单地返回false
不管。在我们的案例10 == "10"
类型转换后,比较的两边都是相等的,所以它返回true
。
*经过类型转换*转换后的哪一种类型? – 2016-11-26 12:04:30
我不知道这是否完全是一个问题,但如果是的话;首先我需要说你的观点是正确的,一个隐式类型转换发生在这里,因为==检查不是相同的平等,第二你可能会发现有用这些链接:
JavaScript comparison operators: Identity vs. Equality
Which equals operator (== vs ===) should be used in JavaScript comparisons?
JavaScript - === vs == operators performance
Equality comparisons and sameness
更新:我做了正确的我对CON错误版本和演员,感谢@melpomene。
- 1. 如何在JavaScript中将10转换为.10或10%?
- 2. 键盘的延长iOS中10在某些情况下
- 3. 如何让Coldfusion 10在Windows 10中使用IIS 10
- 4. npm run android在windows下不工作10
- 5. CKDiscoverAllContactsOperation停止在iOS 10下工作
- 6. 如何避免在Java中有10个开关情况?
- 7. 如何使pushViewController:在以下情况下工作?
- 8. MVC 4应用程序无法在Windows 10(IIS 10)中工作
- 9. JavaScript - 是否可以在不使用OR的情况下在一种情况下检查多个工作日?
- 10. 如何在没有交换的情况下阻止骆驼路线10分钟
- 11. 如何在不重新刷新SD卡的情况下更新Windows 10 IoT Core?
- 12. res.render()在一种情况下工作,但不在另一种情况下工作
- 13. 如何使HTML5在没有JS或Jquery的情况下工作
- 14. 如何使RSACryptoServiceProvider在没有填充的情况下工作(nopadding)?
- 15. 如何在不使用MATLAB中的内置函数的情况下做10倍交叉验证?
- 16. 如何在不输入“Home”的情况下使操作在HomeController中工作?
- 17. data.frame()中的stringsAsFactors如何工作?在这种情况下
- 18. 如何在不使用showDocument的情况下从applet调用javascript?
- 19. 如何在不使用javascript的情况下从Asp.Net调用WebMethod
- 20. 如何在使用情况下在什么情况下使用tsql?
- 21. 如何使ToUpperCase工作在这种情况下
- 22. 如何使scrollviewer在这种情况下工作?
- 23. 如何在不使用onClick的情况下关注Javascript链接
- 24. 如何在不使用JavaScript的情况下重复图片?
- 25. 如何在不使用JavaScript的情况下跟踪Flash视频?
- 26. 如何在不使用javascript的情况下读取excel文件
- 27. 如何在不使用撇号的情况下编写此JavaScript
- 28. FileMaker Pro 10 - 同步性如何工作?
- 29. solaris 10键如何让它们工作
- 30. 函数重载在以下情况下如何工作?
最后一句应该是个问题吗? – melpomene
使用==运算符仅检查两个值是否相等。它完全无视这种类型。===运算符检查类型和值使它成为一个更严格的运算符 – Jackthomson
@TheSETJ我猜它不是完全重复的,因为OP想知道'=='如何工作 – Rajesh