Преобразование типов в JavaScript
@honey_and_moneyВ JavaScript действует автоматическое преобразование типов.
Что это значит:
Если вы например будете сравнивать строку и число, то интерпретатор попробует преобразовать строку к типу число. Если в строке содержался символ числа или цифры, то преобразование будет успешным и все нормально сравнится.
Если же в строке было какое-нибудь слово или символ, который нельзя отнести к цифрам - в результате увидим NaN.
Вот некоторые примеры, когда преобразование типов будет работать:
Вывод в консоль такой:
Оператор сравнения == работает не всегда одинаково и ожидаемо.
Приведу пример:
В принципе всё должно быть очевидно - пустая строка приравнивается к false, любая другая к true.
Но из-за неопределенного поведения оператора сравнения == в совокупности с приведением типов, наблюдаем следующее:
Сравнение нуля в строке с false дает нам true, т.к. ноль преобразовывается к числу и обозначает false. Но в то же время это непустая строка. Возникает противоречие, из-за которого мы не можем точно судить о результате.
Далее идет сравнение непустой строки с true и false поочередно. В результате мы видим одно и то же - false, хотя непустая строка обозначает к true.
Поэтому на практике используется сравнение и по типу и по значению: ===
Только в этом случае можно избежать неожиданного поведения и результата
HONEY & MONEY - канал о мире IT, технологиях и создании своего проекта с нуля