Прочитал мануал по поводу строк: Посимвольное сравнение
Но не до конца понял суть сравнения:
"2" > "15"// Выдает true
Почему выдает true?
Если сравнивать по символам, то
"2" > "1"// true
Почему так?
Непосредственно сравнение срок происходит посимвольно - первый с первым, второй со вторым:
Если первая буква первой строки больше – значит первая строка больше, независимо от остальных символов:
Оператор нестрогого равенства ==
сравнивает по типу переменных. А оператор строгого равенства ===
сравнивает численный код символа. Т.к. 2
идёт после 1
(имеет больший код к кодировке Unicode), то двойка больше.
Больше информации по ссылке: Сравнение строк
Немного спецификации, выдержка алгоритма по сравнению строк:
для случая x<y
Если оба операнда строки, тогда:
Если y
- префикс x
- вернуть false. (строка p является префиксом строки q, если q можно получить добавив к строке p другую строку r. Обратите внимание, что любая строка является префиксом для самой себя, так как r может быть пустой строкой.)
Если x
- префикс y
- вернуть true.
Пусть k наименьший не отрицательный индекс для которого код символа из строки x отличается от кода символа из строки y (такое k существует в случае, если никакая из сравниваемых строк не является префиксом другой.)
Пусть m - это код символа x[k]
Пусть n - это код символа y[k]
Если m < n, вернуть true. Иначе, вернуть false.
Обратите внимание: сравнение строк использует просто лексикографический порядок последовательностей кодов символов. Здесь нет попытки использовать более сложное, семантически ориентированных определений равенства строк или символов и схем упорядочения, определенные в спецификации Unicode. Поэтому строки, которые являются канонически эквивалентными согласно стандарту Unicode, могут быть неравными. Фактически этот алгоритм предполагает, что строки уже находятся в нормализованной форме. Кроме того, обратите внимание, что для строк, содержащих дополнительные символы, лексикографическое упорядочение значений кодов символов UTF-16 отличается от того же, для значений code point.
Применительно к коду в вопросе:
"2" > "15"
Строки не являются префиксами друг друга.
k == 0,
m = "2"[0] == '2' = 50
n = "15"[0] == '1' = 49
50 > 49 -> результат сравнения true.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Пытаюсь разобраться с axios, обёрнутым в snotify в своём проекте на VueJSНашёл пример того, как можно поместить одно в другое, но возникает проблема...
Начинающий в js прошу сильно не пинать) функция по клику создает заголовок h4, так же вместе с заголовком создается ссылка с кнопкой удаления...
Имеется input с подключенным bootstrap datetimepickerТакже задается defaultDate в котором дата задается с помощью moment