JS的逻辑判断值

导语

咱们常常在作逻辑断定时会根据断定值的布尔类型来区分操做,即若是是··则··,否则则··的逻辑语境,但因为Js的弱类型特性,它能够利用不一样类型的值来替代布尔值。如:code

if(!false){}, 
if(!""){},
if(!undefined){},
if(!null){},
if(!0){}

效果相同。
可是,这里面又有哪些陷阱呢?类型转换

这些值是否都相等

这些值中co

0 == false    //true
"" == false   //true
"" == 0       //true

false == undefined   //false
false == null        //false
null == undefined    //true

从上面咱们能够看出,虽然 0/false/“”/null/undefined 能够充当相同的布尔角色,可是它们却不能在值上相等。只有 0,false,""值相等,undefined与null值相等,其余不相等。block

为何会这样?

这里在JS运行时的认定机制我也不是特别清楚,我大概知道Js在这里作了一些不严谨的类型转换,全部的值都会被转换为两个值 : false 与true,再执行代码。undefined

备注

因为if语句常常用到,这几种状况仍是记下来比较好。

相关文章
相关标签/搜索