String.raw
используется с литералами шаблона, новым (ish) синтаксисом ES6 для строк с интерполированными переменными, встроенными кавычками и символами новой строки и необязательным применением «тегов» (которые являются просто обратными вызовами функций, которые получают частишаблон разделяется на каждую интерполированную переменную, чтобы вернуть итоговую объединенную строку, как вам нравится).
Так что если у меня есть функция, которая обрабатывает литерал шаблона, и она называется processLiteral
, то я могу сделать что-то вроде этогочтобы применить его к литералу:
processLiteral`This is a string with interpolated variables like ${someVar} and also ${otherVar}.`
В частности, String.raw
предназначен для использования в качестве тега литерала шаблона и будет возвращать необработанную строку без обработки экранированных символов.Значение \n
останется как \n
и не станет новой строкой, \t
останется как \t
и не станет вкладкой и т. Д. Это происходит путем автоматического добавления косых черт перед любыми экранирующими косыми чертами, тем самым избегая их, поэтомуэто эквивалентно использованию \\n
, \\t
и т. д.
Так что в вашем случае, если вы хотите использовать этот метод, поскольку вы не можете поместить шаблонные литералы непосредственно в объявление ключа объекта (это нене правильно разбираться), вы бы сделали что-то вроде этого:
var Array_QA = {};
Array_QA[String.raw`\Large {\lim_{x \to 2}} (5^x + 2^x + 4)`] = "33";
Array_QA[String.raw`\Large {\lim_{x \to 2}} \frac {x^2 - 6x + 8}{x^3 - 4}`] = "0";
Тем не менее, иметь такие сложные строки как ключи объектов, вероятно, не очень хорошая идея с самого начала ... но это должно работать,Я бы посоветовал рефакторинг вашего кода, чтобы сделать это по-другому, если вы можете.