Вы находитесь на странице: 1из 2

Приведение в логический тип - используется функция Boolean()

Приведется к true Приведется к false


непустая строка, Пустая строка ("" '')
число которое не равно 0 Число равное 0
любой object NaN null undefinded

Приведение в чмсло – используются функции Number(),parseInt(),parseFloat()


Number() parseInt() parseFloat()
Boolean true -> 1, false-> 0 NaN NaN
null 0 NaN NaN
undefined NaN NaN NaN
String
"10" 10 10 10
"000011" 11 11 11
"-1.23" -1.23 -1 -1.23
"0xf" 15 15 0
"", " " 0 NaN NaN
"123abc" NaN 123 123
"abc123" NaN NaN NaN
"Hello world" NaN NaN NaN

Приведение в строку – используется функция String() или метод toString()


toString() String()
true или false "true" или "false" "true" или "false"
null error "null"
undefined error "undefined"
123 "123" "123"
1 -12.3 "-12.3" "-12.3"

При арифметических операциях проводится неявное преобразование типов


Для операторов * / % -
Если любой из операндов не представлен числом, то интерпретатор
производит его неявное приведение к числу по правилам функции Number()
Для операции +
- если оба операнда строки – производится их конкатенация;
- если один из операндов строка, то второй приводится к строке используя
правила функции String(), а затем производится их конкатенация.

Унарные операции – любой тип приводится в число по правилам Number()


Возвращается
String "123" -> 123, "123a" -> NaN, "" -> 0
Boolean true -> 1, false -> 0
Null null -> 0
NaN NaN
Object valueOf(), toString()

Логические операторы
p q p && q p || q
true true true true
true false false true
false true false true
false false false false
Приведение типов при логических операциях
!!! Логические операции || и && приводят значение операндов к логическому
типу, но возвращают исходные операнды
expr1 && expr2 Если expr1 может быть преобразован в true, то возвращается
expr2, иначе – expr1
expr1 || expr2 Если expr1 может быть преобразован в true, то возвращается
expr1, иначе – expr2

Оператор NOT (!)


Возвратит false если expr может быть преобразован в true, иначе
!expr
вернет true.

Преобразования типов при операциях сравнения при < <= > >=
При сравнении разных типов интерпретатор пытается преобразовать операнды в
числа по правилам функции Number()
Исключение: когда оба операнда — строки, тогда они не преобразуются.
Что сравниваем Правила сравнения
строка - строка Посимвольно сравниваются коды чисел
число – число сравниваются арифметически
bool - bool Сравниваются как числа true = 1 false = 0

строка – число Строка приводится к числу по правилам Number()


bool – число Boolean тип приводится к числу по правилам
Number()
cтрока - bool Оба приводятся к числу по правилам Number()
один из операндов NaN Результат сравнения false

--------------------------------------------------------------------------
2
Правила сравнения == (equality) и != (not equality)
boolean - любой тип Приводятся к числам по правилам Number()
string - number строка приводится в число по правилам Number()
object - любой тип У объекта вызывается метод valueOf() и к результату
применяются вышеописанные правила, затем сравнение

Величины null и undefined равны друг другу, но не равны чему-то другому.

Величины null и undefined не могут быть преобразованы в другие типы


при операциях equality.

если операнд NaN , то операция == вернет false


а операция != вернет true

Если оба операнда object, то сравнивается - это один и тот же object ?

Оценить