This site is mobile accessible. Press the "Tap Here" button to use a different font-size.


Smartphone icons created by Freepik - Flaticon

  • 7.4 JS Type Conversion

    • Converting Strings to Numbers
    • Converting Numbers to Strings
    • Converting Dates to Numbers
    • Converting Numbers to Dates
    • Converting Booleans to Numbers
    • Converting Numbers to Booleans

    JavaScript Type Conversion

    JavaScript variables can be converted to a new variable and another data type:

    • By the use of a JavaScript function
    • Automatically by JavaScript itself

    The typeof Operator

    You can use the typeof operator to find the data type of a JavaScript variable.

    Example 1: JS Operators - typeof Operator
     typeof   "John"                  // Returns "string"
    typeof   3.14                    // Returns "number"
    typeof   NaN                      // Returns "number"
    typeof   false                    // Returns "boolean"
    typeof  [1,2,3,4]              // Returns "object"
    typeof  {name:'John', age:34}    // Returns "object"
    typeof   new  Date()              // Returns "object"
    typeof   function  () {}          // Returns "function"
    typeof  myCar                   // Returns "undefined" *
    typeof   null                    // Returns "object" 

    Please observe:

    • The data type of NaN is number
    • The data type of an array is object
    • The data type of a date is object
    • The data type of null is object
    • The data type of an undefined variable is undefined *
    • The data type of a variable that has not been assigned a value is also undefined *

    You cannot use typeof to determine if a JavaScript object is an array (or a date).

    The Data Type of typeof

    • The typeof operator is not a variable. It is an operator. Operators ( + - * / ) do not have any data type.
    • But, the typeof operator always returns a string (containing the type of the operand).

    The constructor Property

    The constructor property returns the constructor function for all JavaScript variables.

    Example 2: JS Properties - constructor Property
     "John".constructor                 // Returns function String()  {[native code]}
    (3.14).constructor                 // Returns function Number()  {[native code]}
    false.constructor                 // Returns function Boolean() {[native code]}
    [1,2,3,4].constructor               // Returns function Array()   {[native code]}
    {name:'John',age:34}.constructor    // Returns function Object()  {[native code]}
    new  Date().constructor              // Returns function Date()    {[native code]}
    function  () {}.constructor         // Returns function Function(){[native code]} 

    You can check the constructor property to find out if an object is an Array (contains the word "Array"):

    Example 3: JS Arrays - isArray() function
    function  isArray(myArray) {
       return  myArray.constructor.toString().indexOf("Array") > -1;
    } 

    Or even simpler, you can check if the object is an Array function:

    Example 4: JS Arrays - isArray() function part 2
    function  isArray(myArray) {
       return  myArray.constructor  === Array;
    } 

    You can check the constructor property to find out if an object is a Date (contains the word "Date"):

    Example 5: JS Date Object - isDate() function part 1
    function  isDate(myDate) {
       return  myDate.constructor.toString().indexOf("Date") > -1;
    } 

    Or even simpler, you can check if the object is a Date function:

    Example 6: JS Date Object - isDate() function part 2
    function  isDate(myDate) {
       return  myDate.constructor  === Date;
    } 

    Converting Numbers to Strings

    • The global method String() can convert numbers to strings.
    • It can be used on any type of numbers, literals, variables, or expressions:
    Example 7: JS Converting Numbers to Strings
    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 Number method toString() does the same.

    Example 8: JS Converting Numbers to Strings part 2
    x.toString()
    (123).toString()
    (100  +  23).toString() 

    In the chapter Number Methods, you will find more methods that can be used to convert numbers to strings:

    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

    Converting Booleans to Strings

    The global method String() can convert booleans to strings.

    String(false)      // returns "false"
    String(true)        // returns "true"

    The Boolean method toString() does the same.

    false.toString()   // returns "false"
    true.toString()     // returns "true"

    Converting Dates to Strings

    The global method String() can convert dates to strings.

    String(Date())   // returns "Thu Jul 17 2014 15:38:19 GMT+0200 (W. Europe Daylight Time)"

    The Date method toString() does the same.

    Example

    Date().toString()   // returns "Thu Jul 17 2014 15:38:19 GMT+0200 (W. Europe Daylight Time)"

    In the chapter Date Methods, you will find more methods that can be used to convert dates to strings:

    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)

    Converting Strings to Numbers

    • The global method Number() can convert strings to numbers.
    • Strings containing numbers (like "3.14") convert to numbers (like 3.14).
    • Empty strings convert to 0.
    • Anything else converts to NaN (Not a Number).
    Number("3.14")     // returns 3.14
    Number(" ")        // returns 0
    Number("")         // returns 0
    Number("99 88")    // returns NaN

    In the chapter Number Methods, you will find more methods that can be used to convert strings to numbers:

    Method Description
    parseFloat() Parses a string and returns a floating point number
    parseInt() Parses a string and returns an integer

    The Unary + Operator

    The unary + operator can be used to convert a variable to a number:

    Example 9: JS typeof Operator part 1
     var  y =  "5";        // y is a string
    var  x = + y;       // x is a number 

    If the variable cannot be converted, it will still become a number, but with the value NaN (Not a Number):

    Example 10: JS typeof Operator part 2
     var  y =  "John";     // y is a string
    var  x = + y;      // x is a number (NaN) 

    Converting Booleans to Numbers

    The global method Number() can also convert booleans to numbers.

    Number(false)      // returns 0
    Number(true)       // returns 1

    Converting Dates to Numbers

    The global method Number() can be used to convert dates to numbers.

    d =  new  Date();
    Number(d)           // returns 1404568027739

    The date method getTime() does the same.

    d =  new  Date();
    d.getTime()         // returns 1404568027739

    Automatic Type Conversion

    • When JavaScript tries to operate on a "wrong" data type, it will try to convert the value to a "right" type.
    • The result is not always what you 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 

    Try it yourself

    Automatic String Conversion

    JavaScript automatically calls the variable's toString() function when you try to "output" an object or a 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 not very visible:

    // if myVar = 123             // toString converts to "123"
    // if myVar = true            // toString converts to "true"
    // if myVar = false           // toString converts to "false"

    JavaScript Type Conversion Table

    This table shows the result of converting different JavaScript values to Number, String, and Boolean:

    Original Value Converted to Number Converted to String Converted to Boolean Try it
    false 0 "false" false Try it
    true 1 "true" true Try it
    0 0 "0" false Try it
    1 1 "1" true Try it
    "0" 0 "0" true Try it
    "000" 0 "000" true Try it
    "1" 1 "1" true Try it
    NaN NaN "NaN" false Try it
    Infinity Infinity "Infinity" true Try it
    -Infinity -Infinity "-Infinity" true Try it
    "" 0 "" false Try it
    "20" 20 "20" true Try it
    "twenty" NaN "twenty" true Try it
    [ ] 0 "" true Try it
    [20] 20 "20" true Try it
    [10,20] NaN "10,20" true Try it
    ["twenty"] NaN "twenty" true Try it
    ["ten","twenty"] NaN "ten,twenty" true Try it
    function(){} NaN "function(){}" true Try it
    { } NaN "[object Object]" true Try it
    null 0 "null" false Try it
    undefined NaN "undefined" false Try it
    • Values in quotes indicate string values.
    • Red values indicate values (some) programmers might not expect.
    Navigate this module

    Eventually the navigation links, above, will be replaced by these << (previous) and >> (next) buttons below.



    JavaScript icons used in the buttons provided by ICONS8.COM. Smartphone icons created by Freepik - Flaticon