JS中关于if(xx)和 a==b的类型转换

2019-05-07  本文已影响0人  清苑折纸

if(XX)——不推荐该用法

语法:
if(condition){
statement
}

以上condition可以是任意表达式,不一定是布尔类型的,也可以是非布尔类型的。对于Boolean类型的js在运行时会直接判断,对于非Boolean类型的js会想将其转换为Boolean类型的值再进行判断。

对于非Boolean类型的值转换有如下规则

类型 结果
undefined false
null false
Boolean 直接判断
number +0, −0, 或者 NaN 为 false, 其他为 true
String 空字符串为 false,其他都为 true
object true

举个栗子:

if ("hello") {
console.log("hello")
}

condition是string类型的且不为空,所以转换为Boolean类型为true

if ("") {
console.log('empty')
}

condition是string类型且为空,所以转换为false

if (" ") {
console.log('blank')
}

condition是string类型,但不为空(内有空格),所以转换为true

if ([0]) {
console.log('array')
}

condition是数组类型,归属于对象,所以转换为true

if('0.00'){
console.log('0.00')
}

condition为非空字符串,所以转换为false

a==b的判断——(在转换时我们尽量往数字去带)

在js中==和===都可以做相等判断,其中===是严格意义上的相等,只需要注意NaN不等于NaN即可。而==对于相同类型会直接比较,对于不同类型则会先进行强制类型转换之后在进行比较。

对于==的类型转换有如下规则

具体转换规则
image.png
image.png
上一篇下一篇

猜你喜欢

热点阅读