JavaScript为什么console.log (2== true)结果为false?

JavaScript为什么console.log (2== true) 结果为false?

console.log(1 == true); //true
console.log(2 == true); //false
console.log(4 == true); //false
console.log(!!2); //true
console.log(!!2 == true) //true

那么为什么为什么console.log (2== true) 结果为false?

阅读 7.6k
6 个回答

number和boolean用==比较时会把boolean转换为number再比较值,true转换为number是1,
!!2则是把2转换为boolean,非零转换boolean都是true

因为Boolean类型true转化成数字1,false转化成数字0,然后进行比较的

==就是个大坑,需要使用===才靠谱。

新手上路,请多包涵

任何非零数取非均为false 如:!2 为 false 对其再取非 如: !!2 为true

另一个问题:
2==true 发生数据类型的转换,非零数会转换成false 2==true 也就变成了 false==true 结果就是 false

看看 Ruby

没有自动瞎转换也挺好的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题