自动转换为布尔值
JavaScript 遇到预期为布尔值的地方(比如if
语句的条件部分),就会将非布尔值的参数自动转换为布尔值。系统内部会自动调用Boolean
函数。
因此除了以下五个值,其他都是自动转为true
。
1 | undefined |
下面两种写法,有时也用于将一个表达式转为布尔值。它们内部调用的也是Boolean
函数。
1 | // 写法一 |
自动转换为字符串
JavaScript 遇到预期为字符串的地方,就会将非字符串的值自动转为字符串。具体规则是,先将复合类型的值转为原始类型的值,再将原始类型的值转为字符串。
字符串的自动转换,主要发生在字符串的加法运算时。当一个值为字符串,另一个值为非字符串,则后者转为字符串。
1 | '5' + 1 // '51' |
自动转换为数值
JavaScript 遇到预期为数值的地方,就会将参数值自动转换为数值。系统内部会自动调用Number
函数。
除了加法运算符(+)有可能把运算子转为字符串,其他运算符都会把运算子自动转成数值。
1 | '5' - '2' // 3 |
注意:null
转为数值时为0,而undefined
转为数值时为NaN
。
一元运算符也会把运算子转成数值。
1 | +'abc' // NaN |