JavaScript Type Coercion
Type coercion is the automatic conversion of values from one data type to another.
Type coercion is the automatic conversion of values from one data type to another.
Type coercion happens when you perform an operation on different data types, and the JavaScript engine tries to make them "fit" together.
Example
Example Code
javascriptlet result1 = ('5' + '2'); // = 52
let result2 = ('5' - '2'); // = 3Coercion is implicit (handled automatically by the engine), while type conversion is explicit (you manually use functions like Number() or String()).
Because JavaScript is weakly typed, it doesn't throw errors when types don't match; it just tries to coerce them.
String Coercion (+)
If any part of a + operation is a string, JavaScript converts everything to strings and concatenates them.
Example
Example Code
javascriptlet x = "5" + 2 // x = "52"Numeric Coercion
Other arithmetic operators (-, *, /, %) and the unary plus (+x) force values into numbers.
Example
Example Code
javascriptlet x = "5" - 2 // x = 3Boolean Coercion
Values are coerced to booleans in logical contexts like if statements or using the double-NOT operator (!!).
Falsy values: 0, "", null, undefined, NaN, and false.
Truthy values: Everything else (including empty objects {} and arrays []).
Loose Equality (==)
This operator performs coercion to find a "common type" before comparing.
Example
Example Code
javascriptlet x = (5 == "5") // x = trueBest Practices to Avoid Bugs
Use === (Strict Equality): This checks both value and type without coercion, preventing weird results.
Be Explicit: Instead of relying on automatic behavior, use MDN's recommended conversion methods like Number() or String() to make your intent clear.
Watch for NaN If a string cannot be converted to a valid number, like "abc" - 1), the result is NaN (Not-a-Number).
Interactive Code Examples
JS Example 1
javascriptlet result1 = ('5' + '2'); // = 52
let result2 = ('5' - '2'); // = 3Example 2
javascriptlet x = "5" + 2 // x = "52"Example 3
javascriptlet x = "5" - 2 // x = 3Example 4
javascriptlet x = (5 == "5") // x = true