В js-файлах русские символы, да и любые другие символы с кодом больше 127, внутри строк нужно обязательно экранировать, если кодировка файла не совпадает с кодировкой страницы. Конечно, в таких случаях можно явно указывать требуемую кодировку
<script src="my-cool-app.js" charset="windows-1251">
Если заранее экранировать такие символы, то в дальнейшем уже будет неважно в какой кодировке «сервируется» ваш файл.
Mathias Bynens описал различные варианты экранирования и даже сделал утилиту, которая может экранировать так, чтобы результирующая строка была наименьшей длинны.
Я расскажу очень быстрый способ получить экранированную строку прямо в консоли браузера.
escape("Привет").replace(/%(u[0-9a-f]{4})/ig, "\\$1")
В результате получим экранированную строку:
"\u041F\u0440\u0438\u0432\u0435\u0442"
У этого метода есть один недостаток: символы с кодом меньше 128 нужно обрабатывать отдельным регэкспом.
escape("Hello!").replace(/%([0-9a-f]{2})/ig, "\\x$1")