简体   繁体   中英

Type coercion in JavaScript , how is the conversion done?

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 ?

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-only ToNumber() handles different values by using the Number() constructor without new :

console.log(Number(""))
// 0

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM