JS隐式类型转换
Opened this issue · 0 comments
xiaoxiaosaohuo commented
最近比较费解这个隐式类型转换,还是有必要记录一下。
js就是个小婊砸
上例子
"1" + 2; // "12"
1 + "2"; // "12"
1 + 2 + "3"; // "33"
Javascript 对操作顺序非常敏感,加法运算是自左向右的,因此它等同于下面的表达式:
(1 + 2) + "3"; // "33"
if (1 == true) {
alert("true");
} else {
alert("false");
}
x | y | result |
---|---|---|
bool | any | 先把x转化为Number,(0,1)然后再比较 |
Number | string | 会把x转化为数字 然后比较 |
Number | Object | 调用valueOf 方法将y转换为数字,然后进行比较。 |
以上x和y顺序可以调换
在JS中 空字符串、数字0、false、null、undefined 和 NaN 这 6 个值为假之外,其他所有的值均为真值。
isNaN() isNaN() 方法自带隐式类型转换,该方法在测试其参数之前,会先调用 Number() 方法将其转换为数字。
建议在所有使用条件判断的时候都使用全等运算符 === 来进行条件判断。全等运算符会先进行数据类型判断,并且不会发生隐式类型转换。