JavaScript-javascript三元运算符判断的问题?

服务器管理 服务器管理 主题:1035 回复:2217

JavaScript-javascript三元运算符判断的问题?

偏爱自由 发布于 2017-04-21 字数 158 浏览 1223 回复 6

如下代码,输出结果不同,求解.

console.log('0' ? 'a' : 'b') 
//OUTPUT
a

console.log('0' == true ? 'a' : 'b')
//OUTPU
b

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

支持 Markdown 语法,需要帮助?

评论(6

晚风撩人 2017-10-18 6 楼

if('0'){console.log(1)}
'0' 是非空字符串

甜柠檬 2017-09-21 5 楼

'0'在判断时是作为字符处理的,默认的应该只有为空的时候才会返回false的吧

归属感 2017-07-24 4 楼

console.log('0' ? 'a' : 'b')
//OUTPUT
a
这里表示字符串是‘0‘则输出a,否则输出b

console.log('0' == true ? 'a' : 'b')
//OUTPU
b
这里表示字符为true的时候输出a,否则输出b

夜无邪 2017-06-07 3 楼

console.log(!!'0' == true); // true 这就是为什麽说js 隐式判断是把双刃剑 所以建议以后可以将其利用!! 强制性转换为bool类型的变量

归属感 2017-06-07 2 楼

在js做比较的时候,有这样的三条规则:

1.如果比较的两者中有bool,会把 bool 先转换为对应的 number,即 0 和 1

2.如果比较的双方中有一方为number一方为string,会把string转换为数字

3.把string直接转换为bool的时候,空字符串‘’转换为 false,除此外的一切字符串转换为 true

想挽留 2017-05-21 1 楼

console.log('0' ? 'a' : 'b') :'0'是一个字符串,非空、不等于null、也不是undefined,则认为是true,所以会输出a。console.log('0' == true ? 'a' : 'b') :'0'==true是一个表达式,字符串当然与boolean不相等了,是false,所以输出是b