@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.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы