0

This is because the equality operator == does type coercion, meaning that the interpreter implicitly tries to convert the values before comparing.

Looked into this

but, 0 == '' , I dont understand why it returns true. Can any one explain? what is 0 converted to ? and what is '' converted to to return true ?

Community
  • 1
  • 1
MBK
  • 307
  • 6
  • 23
  • https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Comparison_Operators – Kevin B May 06 '14 at 20:59
  • http://javascriptweblog.wordpress.com/2011/02/07/truth-equality-and-javascript/ – MBK May 06 '14 at 21:15

1 Answers1

3

When abstractly comparing a string and a number, regardless of the order, the string will be converted ToNumber() for the comparison:

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

In the case of 0 == "", ToNumber("") results in 0, which is exactly the other value:

0 == ""  // becomes...
0 == 0   // becomes...
true

Note: You can see how the internal-onlyToNumber() handles different values by using the Number() constructor without new:

console.log(Number(""))
// 0
Jonathan Lonowski
  • 121,453
  • 34
  • 200
  • 199