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 numbers
var
n
=
1
-
"x"
;
// => NaN: string "x" can't convert to a number
n
+
" 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 |
| | | | |
| | | | |
| | | | |
| | | | |
| | | |
Get JavaScript: The Definitive Guide, 6th Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.