Skip to content

Implicit type conversion

Nasimi Mamedov edited this page Aug 7, 2023 · 1 revision

ico25 Неявное приведение типов

Неявное приведение типов происходит в процессе вычисления выражений

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

number boolean

При сложении числа и строки JavaScript обрабатывает число как строку

Например, после выполнения кода:

var res = 20 + "5"

значением переменной res будет строка "205"

JavaScript вычисляет выражения слева направо

В результате выполнения кода:

var res = 20 + 10 + "5"

в переменной res будет значение "305",

а в результате выполнения кода:

var res = "3" + 20 + 10

в переменной res будет значение "32010"

warn-25 При сложении массива и любого другого операнда результат будет строкового типа ( string )

cap-25 1

[ ] + 5            //  "5"
[ ] + false        //  "false"
[ 4 ] + NaN        //  "4NaN"
[ 4, 8 ] + null    //  "4,8null"
null + [ 4, 8 ]    //  "null4,8"

Это происходит потому, что массив преобразуется в строку:

String ( [ 4, 8 ] )

и результат будет 4,8

warn-25 Однако, если в массиве не более одного элемента, и перед массивом стоит знак арифметической операции, он будет приведен к числу:

cap-25 2

null + +[ 4 ]          // 4
+[5] + null            // 5

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

string boolean

Неявное приведение к типу number происходит в арифметических выражениях:

var  x = "8" / 2

( значением переменной x будет 4 )

warn-25 При участии в арифметических операциях пустая строка ( "" ) и пустой массив ( [] ) преобразуется в 0:

var x = ""
var y = x / 5

( выражение "" / 5 будет приведено к 0 / 5 )

console.log ( +"" )         // 0
console.log ( +[] )         // 0
console.log ( +[]+"" )      // 0

warn-25 Если в арифметическом выражении участвуют специальные значения undefined или null, то они преобразуются к числу так:

Number ( undefined )   // NaN
Number ( null )        // 0

warn-25 Если в арифметическом выражении участвуют логические значения true или false, то они преобразуются к числу так:

var a = false
var b = true
var z = a + b    //  0 + 1 --> 1

warn-25 Кроме арифметических операций, преобразование к типу number происходит при участии переменной в операциях сравнения ( за исключением операций === и !==, когда сравниваются не только значения, но и типы данных )

cap-25 3

a = false, b = undefined
a > b       // 0 > NaN  --> false
a < b       // 0 < NaN  --> false
a == b      // 0 == NaN --> false

cap-25 4

a = true,  b = null
a > b       // 1 > null   --> true ( 1 > 0 )
a < b       // 1 < null   --> false
a == b      // 1 == null  --> false

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

string number

Преобразование типов к логическому типу ( boolean ) происходит в условных операторах ( if, тернарный оператор )

cap-25 5

if ( "5" ) console.log ( "Yes" )

Будет вычисляться логическое значение выражения в круглых скобках оператора if, т.е. "под капотом" будет выполнена операция

Boolean ( "5" )

warn-25 При выполнении логических операций || и && происходит неявное приведение типов операндов к логическому значению, но при этом результатом логической операции будет изначальное значение одного из операндов, даже если оно не являются булевым

ico20 &&

Операция && перебирает операнды слева направо, приводя их к логическому значению, до тех пор, пока не встретится первый false

в этом случае возвращается исходное значение последнего операнда

cap-25 6

true && false && null   //  false
true && "5" && null     //  null
true && [] && null      //  null

cap-25 7

true && ![] && null     //  false

вычисляется значение второго операнда ![], оно будет false, операция останавливается и возвращается последний операнд, на котором остановились )

true && true && true && true     //    true

дошли до конца, но не встретили false, возвращается последний операнд


ico20 ||

Операция || перебирает операнды слева направо, приводя их к логическому значению, до тех пор, пока не встретится первый true

в этом случае возвращается исходное значение последнего операнда, на котором остановились

cap-25 8

null || false || 5 || ""          //   5
null || "" || 0 || 4 || 10        //   4

cap-25 9

null || false || undefined || ""  //  ""

последовательно вычисляются логические значения

первого операнда ( null ) - это false,

второго операнда - false,

третьего операнда ( undefined ) - это false,

четвертого операнда ( "" ) - это false

больше операндов нет, операция завершается и возвращает последний операнд, на котором остановилась ( "" )


ico20 !!

можно привести переменную любого типа к boolean с помощью логической операции двойного отрицания:

var x = null
var y = !!x        // false
var x = undefined
var y = !!x        // false
!![ ]      // вернет   true
!!+[ ]     // вернет  false

string number boolean

link-20 w3schools link-20 Equality in JavaScript

© Nasimi Mamedov 2018

Курсы были созданы для студентов A-Level Ukraine.

Использование данных материалов или любой их части коммерческими школами ( курсами ) является нарушением авторских прав.

A-Level Ukraine


1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19

Занятие 1

⤵️

Занятие 2

⤴️ ⤵️

Занятие 3

⤴️ ⤵️

Занятие 4

⤴️ ⤵️

Занятие 5

⤴️ ⤵️

Занятие 6

⤴️ ⤵️

Занятие 7

⤴️ ⤵️

Занятие 8

⤴️ ⤵️

Занятие 9

⤴️ ⤵️

Занятие 10

⤴️ ⤵️

Занятие 11

⤴️ ⤵️

Занятие 12

⤴️ ⤵️

Занятие 13

⤴️ ⤵️

Занятие 14

⤴️ ⤵️

Занятие 15

⤴️ ⤵️

Занятие 16

⤴️ ⤵️

Занятие 17

⤴️ ⤵️

Занятие 18

⤴️ ⤵️

Занятие 19

⤴️ ⤵️

⤴️

ico20 Дополнительно
dir-20 Справочная инфо

Clone this wiki locally