Почему условие '10' > '2' возвращает false, ведь 10 больше чем 2
Если при сравнении '10' > '2'
мы хотим получить результат как численных величин, достаточно привести любой из операндов к числу. Тогда данное выражение будет выдавать результат, совпадающий с математическим сравнением:
Number('10') > '2' // true
'10' > Number('2') // true
Если бы сравнивались числа, то условие бы работало так, как и ожидалось: число 10 больше 2. Но сравниваются строки, а не числа. И строка '10' меньше чем строка '2'. Так интерпретатор работает. Он сравнивает первые символы в строках и проверяет, какой символ идёт раньше в алфавитной последовательности (или в числовой). Например 'bca' > 'abc' - здесь 'b' идёт после 'a', поэтому 'bca' будет считаться больше, чем 'abc'. 2 идет после 1, поэтому интерпретатор считает строку '10' меньше, чем строка '2', как если бы он сравнивал строку 'ab' со строкой 'c'.