Программы JavaScript написаны с использованием набора символов Юникода, что означает, что вы можете использовать любые символы Юникода в строках и комментариях. В целях переносимости и удобства редактирования в идентификаторах рекомендуется использовать только буквы и цифры ASCII. Однако это всего лишь соглашение по программированию; сам язык поддерживает использование букв, цифр и идеограмм Юникода в идентификаторах (но не символов эмодзи). Это означает, что имена констант или переменных могут включать математические символы или неанглийские символы:

const n = 3.14;
const sí = true;

Escape-последовательности Юникода.

Некоторое компьютерное оборудование и программное обеспечение могут неправильно отображать, вводить или обрабатывать все символы Юникода. Чтобы облегчить кодирование и поддержку систем, использующих старые технологии, JavaScript определяет escape-последовательности, которые позволяют представлять символы Юникода, используя только символы ASCII. Эти escape-последовательности Юникода начинаются с \u, за которым следуют четыре шестнадцатеричные цифры (включая прописные и строчные буквы от A до F), или они могут быть заключены в фигурные скобки и состоять из 1–6 шестнадцатеричных цифр. Escape-последовательности Юникода могут появляться в строковых литералах JavaScript, литералах регулярных выражений и идентификаторах (но не в ключевых словах языка). Например, escape-последовательность Юникода для символа «é» — é. Вот три примера использования этого символа в переменной:

// Define a variable using a Unicode character
let café = 1;
// Access the variable using an escape sequence
caf\u00E9
// Another form of the same escape sequence
caf\u{E9}

Более ранние версии JavaScript поддерживали только 4-значные числовые escape-последовательности. Версия с фигурными скобками была представлена ​​в ES6 для лучшей поддержки кодовых точек Unicode длиной более 16 бит, таких как символы эмодзи:

// Print a smiley face emoji
console.log("\u{1F600}");

Escape-последовательности Unicode также могут появляться в комментариях, но, поскольку комментарии игнорируются, escape-последовательности в комментариях обрабатываются как символы ASCII и не интерпретируются как Unicode.

(Мягкие навыки для программистов: amazon.com/dp/B0CF599P8J)

Нормализация Unicode.

Если вы используете в своей программе символы, отличные от ASCII, вам необходимо знать, что Unicode допускает несколько форм кодирования для одного и того же символа. Например, строку «é» можно закодировать как символ Юникода é или как обычный символ ASCII «e», за которым следует комбинированный острый акцент ́. Обе кодировки могут выглядеть одинаково в текстовом редакторе, но имеют разные двоичные представления. Поэтому JavaScript считает их разными, что может привести к проблемным ситуациям:

// This constant is named "caf\u{e9}"
const café = 1;
// This constant is different: "cafe\u{301}"
const café = 2;
// => 1: This constant has a value
café
// => 2: This different constant has a different value
café

Стандарт Unicode определяет предпочтительные кодировки для всех символов и определяет процедуры нормализации для преобразования текста в каноническую форму, пригодную для сравнения. JavaScript предполагает, что интерпретируемый им исходный код уже нормализован, и сам не выполняет никакой нормализации. Если вы хотите использовать символы Юникода в своей программе JavaScript, убедитесь, что вы используете нормализацию Юникода в исходном коде с помощью редактора или других инструментов, чтобы избежать появления идентификаторов, которые выглядят одинаково, но на самом деле различаются.

(Мягкие навыки для программистов: amazon.com/dp/B0CF599P8J)