как именно операторы сравнения чисел Javascript обрабатывают строки? - PullRequest
3 голосов
/ 18 ноября 2011
var i = ['5000','35000'];
alert((i[0] < i[1])?'well duh!':'fuzzy math?');
alert((Number(i[0]) < Number(i[1]))?'well duh!':'fuzzy math?');

Что здесь происходит? В первом предупреждении текстовая строка «5000» оценивается как , а не меньше, чем «35000». Я предполагал, что Javascript использовал Number () при численном сравнении строк, но, очевидно, это не так. Просто любопытно, как именно Javascript по умолчанию обрабатывает числовое сравнение строк чисел.

1 Ответ

4 голосов
/ 18 ноября 2011

Javascript сравнивает строки по значению символа, независимо от того, выглядят ли строки как числа или нет.

Это можно увидеть в спецификации , раздел 11.8.5, пункт 4.

'a' < 'b' и 'ab' < 'ac оба являются истинными.

...