最佳方式(在浏览器测试布尔表达式)
!!()
!!(-0)
!!(null)
0、NaN、' '、null、undefined 转换为boolean,值都为flase
== 与 !!() 的区别
7==true//false
!!(7)//true
'a'==true//false
!!('a')//true
== 会自动转换,基本上是转为number 再比较
if()、while()、三元操作符、Boolean()、!!()等地方的表达式boolean 情况一样
不同于new Boolean() //这货返回的是一个Object,不是基础值
不同于 2==true 'a'==true 这些会自动转类型为数字后再比较
//true
1?true:false
1.5?true:false
2?true:false//所有正数
-1?true:false//所有负数//嘤?
Object?true:false
new Boolean(false)?true:false//new Boolean() 是个Objet,所以是true
[]?true:false//嘤?
'false'?true:false//非空字符串
//false
+0?true:false
-0?true:false
false?true:false
new Boolean(false).valueOf()?true:false
Boolean(false)
NaN?true:false
''?true:false
undefined?true:false
null?true:false
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Boolean
条件语句和循环语句这样用到布尔类型值的上下文中
使用强制类型转换将值转换为布尔值
https://developer.mozilla.org/zh-CN/docs/Glossary/Falsy
== === !() 非常全的例子
https://dorey.github.io/JavaScript-Equality-Table/
== 类型转换规则 https://github.com/jawil/blog/issues/1