Why false == “false” is false?

前端 未结 4 1168
一个人的身影
一个人的身影 2021-02-15 14:24

I am still learning the basics of javaScript and I don\'t understand why this happens.

Having type coercion false == \"false\"would be converted into:

相关标签:
4条回答
  • 2021-02-15 14:54
    false == "false" // false
    

    because, the boolean false is converted into 0, so, we compare 0 with "false" and the output is false

    0 讨论(0)
  • 2021-02-15 15:07

    These are different kind of items. "string" and boolean.

    So:

    false.toString() == "false"
    
    0 讨论(0)
  • 2021-02-15 15:14

    You've misunderstood the type conversion rules. false doesn't get converted to a string before comparison.

    If Type(x) is Boolean, return the result of the comparison ToNumber(x) == y.

    false is converted to a number, which gives:

    +0 == "false"
    

    … then …

    If Type(x) is Number and Type(y) is String, return the result of the comparison x == ToNumber(y).

    "false" is converted to a number, which gives:

    +0 == NaN
    

    … which is false.

    0 讨论(0)
  • 2021-02-15 15:14

    The answer is because "false" is a string (as Gerardo Furado pointed out in the comments), the test you are making is equivalent to false = "hello".

    Javascript does not look at the word in the string to determine if it is a boolean and then try to get the value from that.

    Note:

    In general in javascript it is now preferred that you use the === operator, to avoid all of this.

    0 讨论(0)
提交回复
热议问题