When performing operations such as -, *, /, ==, != in JavaScript, if the value types on the left and right sides of the operator are inconsistent with the expected type, JavaScript will convert the values on both sides of the operator into the expected type. Do the operation again. When the expected value type is string, JavaScript will convert the value to string; when the expected value type is number, JavaScript will convert the value to number (if it cannot be converted to a numerical value, NaN will be returned). For example:
Value type conversion rules
For value conversion rules in JavaScript, please refer to Table 3-2. JavaScript type conversions in the book "JavaScript – The Definitive Guide". Some of the more noteworthy places are:
1. The result after undefined is converted to number is NaN.
2. The result of converting null to number is 0.
3. The result of converting the empty string "" into number is 0.
4. The result after converting -0 to string is "0".
5. The result of converting the empty array [] to number is 0.
6. When an array with only one number member (such as [9]) is converted into number, the result is the numer value (9).
When JavaScript converts string to number, there are two interesting rules:
1. JavaScript will delete the blank characters at the beginning and end of the string before converting it, so a string like "42" can be successfully converted into the number 42.
2. After removing the blank characters at the beginning and end, if the string still contains non-numeric characters, the string will be converted to NaN. For example: "3 m" will be converted to NaN.
Example:
Value type conversion and comparison
In JavaScript, the use of the equal operator (==) involves value type conversion: if the value types on both sides of the == operator are inconsistent, then JS will convert them into consistent types before making a judgment. It should be noted that two values of different types may be equivalent after type conversion, but this does not mean that the result of using the == operator on them must be true. A simple example is undefined and false: after converting undefined to boolean type, the result happens to be false, but in fact the result of undefined==false is false.
Explicit type conversion
Using JavaScript's automatic type conversion is very convenient, but it can also easily cause problems such as code maintainability. In order to make the program code clearer and reduce ambiguity, explicit type conversion is sometimes used in JS programs:
Use of automatic type conversion
In JS, you can use automatic conversion of value types and use operators to achieve the same effect as explicit conversion, such as: