if的判断
if(condition) {
statement
}
condition的值会自动调用Boolean()转换函数将这个表达式的结果转换为一个布尔值。如果condition值为true则执行括号内语句statement。
Boolean()转换
| 数据类型 | 转换位false的值 |
|---|---|
| Boolean | false |
| String | ""(空字符串)为false |
| Number | 0和NaN为false |
| Object | 全为true |
| Undefined | false |
| Null | false |
例子
if (" ") {
console.log('blank')
}//true,输出blank,if()内不是空字符串有空格
if ("") {
console.log('empty')
}//false,不输出,if()内空字符串
if ([0]) {
console.log('array')
}//true 输出array,[0]是空数组
==的判断
在转化不同的数据类型时,有以下基本规则
- 如果有一个操作数是布尔值,则在比较相等性之前先将其转换为数值
- 如果一个操作数是字符串,另一个数是数值,在比较相等性之前先将字符串转换为数值
- 如果一个操作数是对象,另一个操作数不是,则调用对象的valueOf()方法,用得到的基本类型值按照前面的规则进行比较。
一些特殊情况
| 表达式 | 值 |
|---|---|
| null == undefined | true |
| NaN == NaN | false |
| false == 0 | true |
| undefined == 0 | false |
| null == 0 | fasle |
| "1" == 1 | true |
例子
"" == 0 // true
" " == 0 //true
"hello" == true //false
var obj = {
a: 0,
valueOf: function(){return 1}
}
obj == 1 // true