首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么('0‘?'a‘:'b')行为不同于('0’== true?'a‘:'b')

为什么('0‘?'a‘:'b')行为不同于('0’== true?'a‘:'b')
EN

Stack Overflow用户
提问于 2011-09-21 16:27:19
回答 3查看 7.9K关注 0票数 111

为什么以下两个语句的结果不同?

代码语言:javascript
复制
('0' ? 'a' : 'b') /* -> 'a' */
('0' == true ? 'a' : 'b') /* -> 'b' */

jsFiddle testcase

编辑:

我要补充的是,我怀疑'0‘第一个要转换为布尔值的语句将被比较-它应该与“'0’== true”完全相同,显然这不是真的。

EN

回答 3

Stack Overflow用户

发布于 2011-09-21 16:30:56

因为'0‘不等于1,所以它不等于true,尽管它不是false。在第一种情况下,当' 0‘被强制转换为bool时,对于非0的所有内容,强制转换操作符返回true。

票数 3
EN

Stack Overflow用户

发布于 2011-09-21 16:31:38

这是因为'0'是真实的(在if语句中),但不被认为等同于true。就像3和17都是真的,但不相等。

票数 -3
EN

Stack Overflow用户

发布于 2011-09-21 16:37:04

('0‘?'a‘:'b') --> 0为false,'0’是某个字符串,因此不是FALSE 0,null或'‘(空字符串)在这种情况下视为FALSE

('0‘==是否正确?'a‘:'b') -->正如其他人提到的,some_string与布尔值的比较TRUE不是TRUE

票数 -4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7496727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档