@Torento20345

Как при сравнении == строка преобразовывается в число?

Отрывок из learn.javascript
Использование обычного сравнения == может вызывать проблемы. Например, оно не отличает 0 от false:
Это происходит из-за того, что операнды разных типов преобразуются оператором == к числу. В итоге, и пустая строка, и false становятся нулём.

Получается, что сравнение
'hello' == 123
это
parseInt('hello') == parseInt('123')
так?

И [] == {} аналогично parseInt([]) == parseInt({})?
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
Lynn
@Lynn
nginx, js, css
Получается, то сравнение
'hello' == '123'
это
parseInt('hello') == parseInt('123')
так?

Нет. Оба операнда строки и никакого приведения типов не будет.

И [] == {} аналогично parseInt([]) == parseInt({})?

Нет. Оба операнда объекты — приведения не будет.

https://262.ecma-international.org/10.0/#sec-abstr...

Строка преобразовывается в число когда вы сравниваете строку и число (пп. 4 и 5 из описания алгоритма выше).

Например 'hello' == 123 приведёт строку к числу ToNumber('hello') == 123 и получится NaN == 123 → сравниваем два числа и получаем false.

Тут ToNumber это такая специальная операция, можно считать что это то же самое что вызов функции Number.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
Brightdata Тель-Авив
от 5 500 до 6 500 $
Rocket Брянск
от 60 000 до 100 000 ₽
21 мая 2024, в 22:35
5000 руб./за проект
21 мая 2024, в 22:05
90000 руб./за проект
21 мая 2024, в 21:56
10000 руб./за проект