Type Conversions
JavaScript is very flexible about the types of values it
requires. We’ve seen this for booleans: when JavaScript expects a
boolean value, you may supply a value of any type, and JavaScript will
convert it as needed. Some values (“truthy” values) convert to
true and others (“falsy” values)
convert to false. The same is true
for other types: if JavaScript wants a string, it will convert
whatever value you give it to a string. If JavaScript wants a number,
it will try to convert the value you give it to a number (or to
NaN if it cannot perform a
meaningful conversion). Some examples:
10+" objects"// => "10 objects". Number 10 converts to a string"7"*"4"// => 28: both strings convert to numbersvarn=1-"x";// => NaN: string "x" can't convert to a numbern+" objects"// => "NaN objects": NaN converts to string "NaN"
Table 3-2 summarizes how values convert from one type to another in JavaScript. Bold entries in the table highlight conversions that you may find surprising. Empty cells indicate that no conversion is necessary and none is performed.
Table 3-2. JavaScript type conversions
Value | Converted to: | |||
|---|---|---|---|---|
String | Number | Boolean | Object | |
| | | | throws TypeError |
| | | | throws TypeError |
| | | | |
| | | | |
| | | | |
| | | | |
| | | | |