Explicit type conversion - garevna/js-course GitHub Wiki

ico25 Приведение типов

ico20 Явное приведение типов

string number boolean object

Самый простой способ явного приведения данных произвольного типа к типу string, number или boolean - использование встроенных одноименных функций String(), Number(), Boolean()

cap-25 1

var x = "10"
Number ( x )    // 10

вернет число 10

cap-25 2

Number ( "туман" )

вернет специальное значение NaN ( Not a Number ),

что означает, что строка "туман" не может быть преобразована к числу

cap-25 3

String ( 50 )   // "50"

вернет строку "50"

cap-25 4

Boolean ( "50" )  // true

вернет логическое значение true


ico20 Явное приведение к типу number

string boolean object

warn-30 Во всех нижеперечисленных случаях результат будет 0:

Number ( null )    // 0
Number ( false )   // 0
Number ( "" )      // 0
Number ( " " )     // 0
Number ( [] )      // 0
Number ( "\n" )    // 0
Number ( "\t" )    // 0

"пробельные" символы "", " ", "\n", "\t" всегда приводятся к 0

Number ( String.fromCharCode(9) )   // 0
Number ( String.fromCharCode(10) )  // 0
Number ( String.fromCharCode(11) )  // 0
Number ( String.fromCharCode(12) )  // 0
Number ( String.fromCharCode(13) )  // 0

String.fromCharCode( cod ) возвращает символ, код которого равен cod

warn-30 Number ( true ) вернет 1

warn-30 В случаях, когда преобразовать выражение к числу невозможно, результат будет NaN ( Not a Number ):

cap-25 1

Number ( undefined )
Number ( " 12s " )
Number ( "4+8" )
Number( [ 5, 7, 4 ] )
Number ( NaN )
Number ( {} )

warn-30 Во всех остальных случаях результат будет числом

cap-25 2

Number ( 57 )            // вернет 57
Number ( 4*"8" )         // вернет 32
Number ( [5] )           // вернет 5
Number ( [5]+[8] )       // вернет 58
Number( null - true )    // вернет -1

Для приведения к целому числу или к числу с плавающей запятой ( с десятичными знаками ) можно использовать встроенные функции parseInt и parseFloat

В отличие от конструктора Number, эти функции парсят строку, даже если в ней есть "левые" символы после числа - эти символы просто будут проигнорированы:

Number ('3.14abc')      // NaN
parseFloat ('3.14abc')  // 3.14
parseInt ('3.14abc')    // 3

Number('3.14/5')        // NaN
parseFloat('3.14/5')    // 3.14

Однако если строка начинается с символов, которые не могут быть приведены к числу, эти функции вернут NaN


ico20 Явное приведение к типу boolean

string number object

warn-30 Во всех нижеперечисленных случаях результат будет false:

Boolean ( "" ) 
Boolean ( 0 )     
Boolean ( -0 )  
Boolean ( NaN ) 
Boolean ( null )
Boolean ( undefined )
Boolean ( false ) 

warn-30 Во всех остальных случаях результат будет true

При приведении строки к булевому типу действует простое правило:

если длина строки равна 0, то возвращается false, в противном случае - true


ico20 Явное приведение к типу string

number boolean object
var str = String ( 5 + 8 + false )  //  "13"

var x = {}
String ( x )  //  "[object Object]"

var y = [ 5, true, "hello", 11 ]
String ( y )  //  "5,true,hello,11"

При приведении числа к типу string можно использовать метод toString(), который принимает один аргумент - десятичное число 2, 8 или 16 ( система исчисления )

Десятичная система исчисления подразумевается по умолчанию, поэтому аргумент при этом можно опустить

Для того, чтобы получить строчное значение числа в двоичной системе исчисления, нужно передать методу toString() аргумент 2, в восьмеричной - 8, в шестнадцатеричной - 16

Number(2).toString(2)    // "10"
Number(58).toString(2)   // "111010"
Number(8).toString(8)    // "10"
Number(58).toString(8)   // "72"
Number(16).toString(16)  // "10"
Number(58).toString(16)  // "3a"

ico20 Явное приведение к типу object

string number boolean
Object ( 5 + 8 + false )
▼ Number {13}
  ► __proto__: Number
    [PrimitiveValue](/garevna/js-course/wiki/PrimitiveValue): 13
var x = 10
Object ( x )
▼ Number {10}
  ► __proto__: Number
    [PrimitiveValue](/garevna/js-course/wiki/PrimitiveValue): 10
var y = [ 5, true, "hello", 11 ]
Object ( y )

Преобразования не будет, поскольку тип данных переменной y уже object


string number boolean object

hw-30 Упражнения


link-20 w3schools link-20 Equality in JavaScript