Строки
Строка — неизменяемая последовательность 16-битных значений (массивоподобный объект). Для представления символов Юникода используется кодировка UTF-16. При этом, в JS нет отдельного типа "символ".
Строковые литералы могут быть следующих типов:
let str1 = 'строка';
let str2 = "строка";
let str2 = `строка`; // шаблонная строка (es6+)
Примечание: одинарные и двойные кавычки равноправны.
Кроме обычных символов можно использовать специальные, например:
код | результат |
---|---|
\' |
одинарная кавычка (например 'That\'s nice!' ) |
\" |
двойная кавычка (например "Did she say \"Hello\"?" ) |
\\ |
обратный слэш |
\n |
новая строка |
\r |
возврат каретки |
\t |
табуляция |
\uXXXX |
кодовая точка Юникода (например '\u03c0' ==> 'π' ) |
\xXX |
символ из кодировки Latin-1 (например '\x66' ==> 'f' ) |
Примечание: XX и XXXX — шеснадцатиричные символы.
Длинна
Длинна строки содержится в свойстве length
, например 'abc'.length === 3
.
Однако, из за ограничения в 16 бит на символ,
некоторые символы могут быть представлены двумя значениями (суррогатные пары).
Из этого следует, что значение length
не равно количеству символов.
Сравнение
В JS символы сравниваются не по алфавиту а по коду, а сами строки — посимвольно (лексикографически).
Для правильного сравнения строк можно использовать стандарт ECMAScript Internationalization API (Intl),
в частности, метод localeCompare
.