if语句
if语句是编程语言最常用的语句,语法1
2
3
4
5if(condition){
//true statement
}else {
//false statement
}
其中condition
可以是任意表达式,结果不一定是布尔值,JavaScript解释器会自动调用Boolean()
将表达式结果转为布尔值,如果表达式为真,执行第一个代码块内语句,如果为假,执行第二个代码块内语句。
例如:
1 | var a = 3; |
当转换成boolean类型时遵循下列规则:
- 如果表达式的值是一个对象,返回true
- 如果表达式的值是一个空字符串,返回false
- 如果表达式的值是一个非空字符串,返回true
- 如果表达式的值是数值0,或NaN,返回false
- 如果表达式的值是任意非零数值(包括Infinity),返回true
- 如果表达式的值是null,返回false
- 如果表达式的值是undefined,返回false
示例:
1 | /* 字符串 */ |
a==b相等运算符
相等运算符用来比较相同类型的数据时,与严格相等运算符完全一样。
比较不同类型的数据时,相等运算符会先将数据进行类型转换,然后再用严格相等运算符比较。类型转换规则如下:
(1)原始类型的值
原始类型的数据会转换成数值类型再进行比较。
1 | 1 == true // true |
上面代码将字符串和布尔值都转为数值,然后再进行比较。
(2)对象与原始类型值比较
对象(这里指广义的对象,包括数组和函数)与原始类型的值比较时,对象转化成原始类型的值,再进行比较。
1 | [1] == 1 // true |
上面代码中,数组[1]
与数值进行比较,会先转成数值,再进行比较;与字符串进行比较,会先转成数值,然后再与字符串进行比较,这时字符串也会转成数值;与布尔值进行比较,两个运算子都会先转成数值,然后再进行比较。
(3)undefined 和 null
undefined
和null
与其他类型的值比较时,结果都为false
,它们互相比较时结果为true
。
1 | false == null // false |
绝大多数情况下,对象与undefined
和null
比较,都返回false
。只有在对象转为原始值得到undefined
时,才会返回true
,这种情况是非常罕见的。