JavaScript variables can be converted to a new variable of a different data type in two ways:
The global method Number() converts a variable (or value) into a number.
A numeric string (such as “3.14”) is converted to a number (3.14).
An empty string (like “”) is converted to 0.
A non-numeric string (like “John”) is converted to NaN (Not a Number).
The following will be converted:
| Number(“3.14”) Number(Math.PI) Number(” “) Number(“”) |
The following will not be converted:
| Number(“99 88”) Number(“John”) |
|
Method |
Description |
|
Number() |
Returns a number, converted from its argument |
|
parseFloat() |
Parses a string and returns a floating point number |
|
parseInt() |
Parses a string and returns an integer |
The unary + operator can be used to convert a variable into a number.
| let y = “5”; // y is a string let x = + y; // x is a number |
If the variable cannot be converted, it will still become a number, but its value will be NaN (Not a Number).
| let y = “John”; // y is a string let x = + y; // x is a number (NaN) |
The global method String() can convert numbers into strings.
It can be applied to any type of number, including literals, variables, or expressions.
| String(x) // returns a string from a number variable x String(123) // returns a string from a number literal 123 String(100 + 23) // returns a string from a number from an expression |
The toString() method of the Number object performs the same function.
| x.toString() (123).toString() (100 + 23).toString() |
|
Method |
Description |
|
toExponential() |
Returns a string, with a number rounded and written using exponential notation. |
|
toFixed() |
Returns a string, with a number rounded and written with a specified number of decimals. |
|
toPrecision() |
Returns a string, with a number written with a specified length |
The global method Number() can be used to convert dates into numbers.
| d = new Date(); Number(d) // returns 1404568027739 |
The getTime() method of the Date object performs the same function.
| d = new Date(); d.getTime() // returns 1404568027739 |
The global method String() can convert dates into strings.
| String(Date()) // returns “Thu Jul 17 2014 15:38:19 GMT+0200 (W. Europe Daylight Time)” |
The toString() method of the Date object does the same.
| Date().toString() // returns “Thu Jul 17 2014 15:38:19 GMT+0200 (W. Europe Daylight Time)” |
|
Method |
Description |
|
getDate() |
Get the day as a number (1-31) |
|
getDay() |
Get the weekday a number (0-6) |
|
getFullYear() |
Get the four digit year (yyyy) |
|
getHours() |
Get the hour (0-23) |
|
getMilliseconds() |
Get the milliseconds (0-999) |
|
getMinutes() |
Get the minutes (0-59) |
|
getMonth() |
Get the month (0-11) |
|
getSeconds() |
Get the seconds (0-59) |
|
getTime() |
Get the time (milliseconds since January 1, 1970) |
The global method Number() can also convert booleans into numbers.
| Number(false) // returns 0 Number(true) // returns 1 |
The global method String() can convert booleans into strings.
| String(false) // returns “false” String(true) // returns “true” |
The toString() method of the Boolean object performs the same function.
| false.toString() // returns “false” true.toString() // returns “true” |
When JavaScript attempts to perform operations on an incorrect data type, it will try to convert the value to a suitable type.
The outcome is not always what you might expect.
| 5 + null // returns 5 because null is converted to 0 “5” + null // returns “5null” because null is converted to “null” “5” + 2 // returns “52” because 2 is converted to “2” “5” – 2 // returns 3 because “5” is converted to 5 “5” * “2” // returns 10 because “5” and “2” are converted to 5 and 2 |
JavaScript automatically invokes the variable’s toString() function when you attempt to “output” an object or variable.
| document.getElementById(“demo”).innerHTML = myVar; // if myVar = {name:”Fjohn”} // toString converts to “[object Object]” // if myVar = [1,2,3,4] // toString converts to “1,2,3,4” // if myVar = new Date() // toString converts to “Fri Jul 18 2014 09:08:55 GMT+0200” |
Numbers and booleans are also converted, but this is less noticeable.
| // if myVar = 123 // toString converts to “123” // if myVar = true // toString converts to “true” // if myVar = false // toString converts to “false” |
This table illustrates the results of converting various JavaScript values to Number, String, and Boolean.
|
Original |
Converted |
Converted |
Converted |
|
false |
0 |
“false” |
false |
|
true |
1 |
“true” |
true |
|
0 |
0 |
“0” |
false |
|
1 |
1 |
“1” |
true |
|
“0” |
0 |
“0” |
true |
|
“000” |
0 |
“000” |
true |
|
“1” |
1 |
“1” |
true |
|
NaN |
NaN |
“NaN” |
false |
|
Infinity |
Infinity |
“Infinity” |
true |
|
-Infinity |
-Infinity |
“-Infinity” |
true |
|
“” |
0 |
“” |
false |
|
“20” |
20 |
“20” |
true |
|
“twenty” |
NaN |
“twenty” |
true |
|
[ ] |
0 |
“” |
true |
|
[20] |
20 |
“20” |
true |
|
[10,20] |
NaN |
“10,20” |
true |
|
[“twenty”] |
NaN |
“twenty” |
true |
|
[“ten”,”twenty”] |
NaN |
“ten,twenty” |
true |
|
function(){} |
NaN |
“function(){}” |
true |
|
{ } |
NaN |
“[object Object]” |
true |
|
null |
0 |
“null” |
false |
|
undefined |
NaN |
“undefined” |
false |
Values in quotes represent string values.
Red values highlight results that some programmers may not anticipate.