• @adrian783
    link
    3
    edit-2
    1 year ago

    2 equal signs will coerce the second operand into the type of first operand then do a comparison of it can. so 1 == “1” is true. this leads to strange bugs.

    3 equal signs do not do implicit type conversion, cuts down on weird bugs. 1===“1” is false.

    edit: it appears to be more complicated than that for double equals and the position of operands don’t matter. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Equality

    • Rikudou_Sage
      link
      fedilink
      English
      11 year ago

      Doesn’t it widen the types regardless of position? Meaning 1 == “1” will be compared as strings, not numbers.

        • Rikudou_Sage
          link
          fedilink
          English
          11 year ago

          It seems it is that way, which is weird. You should always convert to the widest type, meaning string for comparing numbers and strings. I just checked that 1 == "01" is true, which means that “01” gets cast to an integer. And according to the document it might be that for example 1 == "a" would basically be interpreted as 1 === NaN which is false.