美文网首页
JavaScript之if(xx)和 x==y的判断

JavaScript之if(xx)和 x==y的判断

作者: YYPL | 来源:发表于2020-06-01 23:49 被阅读0次

    ⚠️⚠️⚠️注意

    在实际编程中使用『!==』与『===』,而不要使用『==』 或是 『!=


    if() 表达式

    对于括号里的表达式,会被强制转换为布尔类型 ToBoolean

    类型 结果
    Undefined false
    Null false
    Boolean 直接判断
    Number +0, −0, 或者 NaN 为 false, 其他为 true
    String 空字符串为 false,其他都为 true
    Object true

    ==

    只需要记住 『undefined == null』,undefined和null与其他类型比较时,结果为false。其他类型的值,一般是是通过强制转化成数字,然后再进行比较

    x y 结果
    null undefined true
    Number String x == toNumber(y)
    Boolean (any) toNumber(x) == y
    Object String or Number toPrimitive(x) == y
    otherwise otherwise false

    toNumber

    类型 结果
    Undefined NaN
    Null 0
    Boolean ture -> 1, false -> 0
    String “abc” -> NaN, “123” -> 123
    Object 1. Let primValue be ToPrimitive(input argument, hint Number) 2. Return ToNumber(primValue).

    Object 先调用valueOf 得到 原始类型的值 转化为 number 再比较。如果valueOf得到的不是原始值,则调用 toString。否则报错


    实例剖析

    🌰[0] == true //false
    [0] == true; 
     
    // 工作流程
    
    // toNumber转化布尔值为  数字
    [0] == 1;
    
    // toPrimitive 把『object』转化为『原始类型的值』
    
    //[0].valueOf() 转化仍然为诶『object』,再调用toString()
    //[0].toString() -> "0"
    "0" == 1; 
    
    //toNumber转化 string '1' 为数字
    0 == 1; //false!
    
    🌰[] == true //false
    [] == true; 
     
    // 工作流程
    
    // toNumber转化布尔值为  数字 Number(true)
    [] == 1;
    
    
    // toPrimitive 把『object』转化为『原始类型的值』
    
    //[].valueOf() 转化仍然为诶『object』,再调用toString()
    //[].toString() -> ""
    "0" == 1; 
    
    //toNumber转化 string '' 为数字 Number('')
    0 == 1; //false!
    
    🌰{} == true //false
    {} == true; 
     
    // 工作流程
    
    // toNumber转化布尔值为  数字
    ({}) == 1;
    
    // toPrimitive 把『object』转化为『原始类型的值』
    //({}).valueOf(),返回的值是一个空对象,然后再调用toString()即是({}).valueOf().toString(),返回的是值 "[object Object]",而"[object Object]"转化为`number`的值是NaN,所以
    
    ({}) == 1 // false
    ({}) == 0 // false
    

    参考:
    !!!Truth, Equality and JavaScript – JavaScript

    == if() ===-JS Comparison Table


    版权声明:本文为博主原创文章,未经博主许可不得转载

    相关文章

      网友评论

          本文标题:JavaScript之if(xx)和 x==y的判断

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