Lesson 6 / 38

Type Conversion & Coercion

Explicit conversion vs JS's automatic coercion.

Explicit conversion

Convert on purpose with Number(), String(), Boolean().

Number("42");     // 42
String(42);       // "42"
Boolean(0);       // false
Boolean("");      // false
Boolean("0");     // true (non-empty string!)

Implicit coercion

JS auto-converts types in operations — + with a string triggers concatenation, but -, *, / coerce operands to numbers.

The classic gotchas

Coercion produces some famously surprising results — know them so they don't surprise you in real code.

console.log("5" + 3);     // "53"
console.log("5" - 3);     // 2
console.log(1 + true);    // 2
console.log([] + []);     // ""

== vs ===

== coerces types before comparing; === compares value and type. Prefer === almost always.