Javascript隐式转换
Javascript对类型错误出奇宽容,通常情况下不会抛出异常,而是按照多种多样的自动转换协议将值转换成期望的类型。
一 -、*、/、%在计算之前都会尝试将其参数转换为数字
2 - '2' // 0
2 * '2' // 4
2 / '2' // 1
2 % '2' // 0
二 + 比较特别,因为它既承载数字的相加,有承载了字符串链接
具体是数字相加还是字符串链接,取决于参数的类型
'2' + 3 // '22'
2 + '3' // '23'
1 + 2 + '3' // '33'
(1 + '2') + 3 // '123'
三 真值的转换
程序中常见的逻辑判断。
if(true){
}
a || b
a && b
if、||、&& 等运算符逻辑上需要布尔值操作,但实际上可以接受任何值,Javascript隐式的强制转换成布尔值。
幸运的是Javascript只有7个假值:false、0、-0、""、NaN、null和undefined
,其他都是真值。
var flag = {}; // 'test'、100、 ' '、{}
if(flag){
console.log(true);
}
注意 ' '
为true
var flag = ' '; //
if(flag){
console.log(true); // true
}