if(xx)的和a==b的判断
2018-05-12 本文已影响0人
小御茶
1.if(xx)括号里的表达式,会被强制转换为布尔类型
具体转换法则如下
- Undefined 转换为 false;
- Null 转换为false;
- Boolean 直接转换;
- Number : +0、-0、NaN 转换为 false, 除此之外全为 true;
- String : 空字符串为false,其他都为true。(" ")这种含有空格的看起来像空字符串然而实际是非空字符串,所有的非空字符串转换为布尔值都是 true)英文了解一下:String->Boolean---The result is false if the argument is the empty String; otherwise the result is true.
2.关于 a == b 的判断
==与===的区别在于JavaScript会帮我们做类型转换:
-
若两个值类型相同,则执行严格相等运算;
-
若两个值的类型不同:
(1)null == undefined; (2)若一个是数字,一个是字符串,先将字符串转为数字再比较; (3)若一个值是布尔值(true/false)则将其转为数字(1/0)再比较; (4)若一个值是对象,一个是数字或字符串,则尝试使用valueOf()和toString()转换后比较; (5)其他则不相等。
-
tonumber(undefined) NaN
-
tonumber(null) 0
-
tonumber(string) "123"="123","abc"="NaN"