Почему опрератор сравнения в javascript сравнивает только первые цифры у чисел?

Пользователь

от ciara , в категории: JavaScript , 7 месяцев назад

Почему опрератор сравнения в javascript сравнивает только первые цифры у чисел?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от cooper.berge , 7 месяцев назад

@ciara 

Оператор сравнения в JavaScript (и в других языках программирования) не сравнивает только первые цифры чисел. Он сравнивает числа в соответствии с их значениями.


Возможно, вы столкнулись с ситуацией, когда оператор сравнения производил неправильный результат при сравнении чисел. Это может произойти, если числа сравниваются как строки. Например:

1
2
3
console.log(2 < 12); // true
console.log(2 < "12"); // false
console.log("2" < "12"); // true


В этом примере первые две операции сравнения дают разный результат, потому что во второй операции строка "12" сравнивается с числом 2 как строка, а не как число. В JavaScript оператор сравнения для строк сравнивает символы по их коду в таблице Unicode. При этом сначала сравниваются первые символы, а если они равны, то следующие, и так далее, пока не будет найдено отличие.


Чтобы избежать подобных ошибок, необходимо убедиться, что сравниваемые значения имеют одинаковый тип данных. В примере выше можно привести строку к числу, используя функцию parseInt():

1
console.log(2 < parseInt("12")); // true