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方法获取结果
网友评论