if判断和==判断解秘

2018-03-24  本文已影响0人  yhldqt

1.if判断

if(xxx){

}

在js中,if括号里的表达式,会被强制转换为布尔类型

// 例1:如下代码输出什么?
if ("hello") {
    console.log("hello")
}
// 答案:判断为true,输出hello
// 例2:如下代码输出什么?
if ("") {
    console.log('empty')
}
// 答案:判断为false,无输出
// 例3:如下代码输出什么?
if (" ") {
    console.log('blank')
}
// 答案:判断为true,输出blank
// 例4:如下代码输出什么?
if ([0]) {
    console.log('array')
}
// 答案:判断为true,输出array
// 例5:如下代码输出什么?
if(0.00){
  console.log('0.00')
}
// 答案:判断为false,无输出

那么,什么情况下表达式会被判断为真,什么情况下表达式会被判断为假呢?
总结:

类型 结果
Undefined false
Null false
Boolean 直接判断
Number +0, −0, 或者 NaN 为 false, 其他为 true
String 空字符串为 false,其他都为 true
Object true

2.== 的判断

"" == 0  //true
" " == 0  //true
"" == true  //false
"" == false  //true
" " == true  //false "空格"转化为数字为NaN
!" " == true  //false  !的操作对象为非空字符串时返回false
!" " == false  //true
"hello" == true  //false
"hello" == false //true
"0" == true  //false
"0" == false  //true
"00" == false  //true
"0.00" == false  //true

先来总结一下

特殊 结果
null == undefined true
number == string number == toNumber(string) ,看字符串是否能转成数字
Object == String or Number toPrimitive(Object) ==
Boolean == (any) toNumber(Boolean) ==(any),把布林值转化为数字

toNumber

类型 结果
Undefined NaN
Null 0
Boolean false--0 ,true--1
String “abc” -> NaN, “123” -> 123

toPrimitive

对于 Object 类型,先尝试调用 .valueOf 方法获取结果。 如果没定义,再尝试调用 .toString方法获取结果

上一篇下一篇

猜你喜欢

热点阅读