美文网首页
判断揭秘

判断揭秘

作者: hhuwc | 来源:发表于2017-12-12 16:55 被阅读0次

    参考文章:《Truth, Equality and JavaScript
    JavaScript 中的相等性判断

    也许你运行代码时会感到困惑,为什么字符串可以作为判断条件,字符串和true 进行 运算结果会是true

    if ("potato") {
        console.log("potato" == false); //false
        console.log("potato" == true); //false
    }
    

    在JavaScript中,所有的条件语句和操作符遵循相同的强制转换规范。 比如说if(Expression)语句将使用抽象方法ToBoolean将表达式求值的结果强制为布尔值,为此,ES5规范定义了以下算法:

    Argument Type Result
    Undefined false
    Null false
    Boolean The result equals the input argument (no conversion).
    Number The result is false if the argument is +0, −0, or NaN;otherwise the result is true.
    String The result is false if the argument is the empty String (its length is zero);otherwise the result is true.
    Object true

    所以 "potato" 作为表达式 转换结果将是 true

    ==那么 "potato" == false是怎么进行运算的,如果"potato" == 1呢?==

    运算规则如下:

    Type(x) Type(y) Result
    x and y are the same type See Strict Equality (===) Algorithm
    null Undefined true
    Undefined null true
    Number String x == toNumber(y)
    String Number toNumber(x) == y
    Boolean (any) toNumber(x) == y
    (any) Boolean x == toNumber(y)
    String or Number Object x == toPrimitive(y)
    Object String or Number toPrimitive(x) == y
    otherwise… false

    那么toNumber ,toPrimitive 是按照什么规则进行转换的

    ToNumber

    Argument Type Result
    Undefined NaN
    Null +0
    Boolean The result is 1 if the argument is true.The result is +0 if the argument is false.
    Number The result equals the input argument (no conversion).
    String In effect evaluates Number(string);“abc” -> NaN;“123” -> 123
    Object Apply the following steps:1. Let primValue be ToPrimitive(input argument, hint Number).2. Return ToNumber(primValue).

    ToPrimitive

    Argument Type Result
    Object (in the case of equality operator coercion) if valueOf returns a primitive, return it. Otherwise if toString returns a primitive return it. Otherwise throw an error
    otherwise… The result equals the input argument (no conversion).

    相关文章

      网友评论

          本文标题:判断揭秘

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