美文网首页
JS中关于if(xx)和 a==b的类型转换

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

作者: 清苑折纸 | 来源:发表于2019-05-07 00:03 被阅读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即可。而==对于相同类型会直接比较,对于不同类型则会先进行强制类型转换之后在进行比较。

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

    • 如果两个值类型相同,则执行严格意义的相等
    • 如果两个值的类型不同
      -1. null等于undefined
      -2. 一个是数字一个是字符串则先将字符串转为数字再比较
      -3. 如果一个值是Boolean类型则先转为0/1再比较
      -4. 如果一个值是对象,另一个是数字或字符串则用valueOf和toString转换之后再比较
      -5. 其他的不相等
    具体转换规则
    image.png
    image.png

    相关文章

      网友评论

          本文标题:JS中关于if(xx)和 a==b的类型转换

          本文链接:https://www.haomeiwen.com/subject/pvijoqtx.html