Небольшая заметка о преобразовании типов в JavaScript к примитивным значениям: когда происходит преобразование и каков его результат.
К числу
- Унарный плюс преобразует строку в число, если это возможно. Если строка не является числом, будет
NaN
. - Арифметические операторы (кроме бинарного плюса) приводят аргументы к числу, если возможно.
- Операторы сравнения преобразуют значения к числам (кроме
===, !==
). parseInt()
,parseFloat()
— преобразуют строку в число, пока это возможно.NaN
будет только если первый символ — не цифра.- Явно —
Number(val)
.
При преобразовании к числу:
undefined | NaN |
null | 0 при этом null>=0 возвращает true , но null>0 и null==0 — false |
true | 1 |
false | 0 |
строка, начинающаяся с цифры (предшествующие пробелы не учитываются) | преобразуется в число, если возможно, при ошибке — NaN |
строка, начинающаяся не с цифры (предшествующие пробелы не учитываются) | NaN |
пустая строка | 0 |
массив | сначала преобразуется в строку, затем эта строка преобразуется в число по правилам |

К строке
- Бинарный плюс — при сложении двух аргументов, если хотя бы один из них является строкой, второй также будет преобразован к строке — конкатенация строк.
- Функция
alert
преобразует свои аргументы к строкам. - Явно —
String(val)
.
К булеву значению
- В логическом контексте — условный оператор
if
. - Двойное отрицание
!!val
. - Явно —
Boolean(value)
.
0, пустая строка, null, undefined, NaN | false |
все числа, кроме 0 все строки, кроме пустой строки, в т.ч. «0» и « » (строка из пробелов) объекты | true |
0 комментариев