美文网首页
关于if(xx)和a==b的判断

关于if(xx)和a==b的判断

作者: 原上的小木屋 | 来源:发表于2018-12-07 01:59 被阅读0次

    if的判断

    • . 原理 对于括号里的表达式类型,会被强制转换为布尔类型
    1. 对于类型为Undefined,转换为false
    2. 对于类型为Null,转换为false
    3. 对于类型为Boolean,直接判断
    4. 对于类型为Number+0、-0、0.00NANfalse,其他为true
    5. 对于类型为String,空字符串为false,其余为true
    6. 对于类型为Object,转换为true
    • 几个例子
    1. if ("hello") { console.log("hello") } 输出hello
    2. if ("") { console.log('empty') } 输出undefined
    3. if (" ") { console.log('blank') } 输出blank
    4. if ([0]) { console.log('array') } 输出array
    5. if('0.00'){ console.log('0.00') } 输出0.00

    ==的判断

    • . 原理
      对于==两侧的xy,判断其是否相等,有如下原理。
    1. x类型为nullyundefined,结果为true
    2. x类型为numbery类型为string,均会将y转化为数字,式子转换为x==toNumber(y)
    3. x类型为Boolean,y类型不限,也均会转化为数字,式子转换为toNumber(x) ==y
    4. x类型为Objecty类型为StringNumber,会将对象转换为字符串或数字,式子转换为toPrimitive(x) ==y
    • 转化为数字的情况
    1. Undifined转化为NaN
    2. Null转化为0
    3. Booleantrue转化为1,false转化为0
    4. 字符串 "abc"转化为NaN"123"转化为123,空字符串空白字符串均转化为0
    • 对于对象类型,先尝试调用valueOf方法获取结果,没有定义的话再尝试调用toString方法获取结果
    • 几个例子
    1. "" == 0 结果为true
    2. " " == 0 结果为true
    3. "" == true 结果为false
    4. "" == false 结果为true
    5. " " == true 结果为false
    6. !" " == true 结果为false
    7. !" " == false 结果为true
    8. "hello" == true 结果为false
    9. "hello" == false 结果为false
    10. "0" == true 结果为false
    11. "0" == false 结果为true
    12. "00" == false 结果为true
    13. "0.00" == false 结果为true
    14. undefined == null 结果为true
    15. true=={} 结果为false
    16. [] == true 结果为false
    • 对于var obj = { a: 0, valueOf: function(){return 1} }
    1. obj == "[object Object]" 结果为false
    2. obj == 1 结果为true
    3. obj == true 结果为true

    相关文章

      网友评论

          本文标题:关于if(xx)和a==b的判断

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