Вам не нужно экранировать любой из них, если вы не хотите использовать содержимое литерала шаблона как строковый литерал, заключенный в одинарную кавычку в какой-то момент. Что выглядит действительно подозрительно: никогда не создавайте вручную JSON строк (и если вы это сделаете, не делайте этого, заключенного в строковый литерал в шаблонном литерале! :-)). Но если вы хотите определить этот строковый литерал в литерале шаблона, вот как выполнить экранирование на уровне строкового литерала:
Чтобы избежать '
в It's
в строке литерал, который будет определять шаблон, вам нужно поставить перед ним backsla sh. Но поскольку обратная косая черта является экранированием в шаблонных литералах, вам нужно избегать обратной косой черты sh, чтобы она не использовалась литералом шаблона, а позже использовалась при оценке строкового литерала. Итак:
// Define the template literal:
const s1 = `'{"0": "It\\'s Friday today"}'`;
// Escaped backslash −^^
console.log(s1);
// Evaluate the single-quoted string literal it defined:
const s2 = eval("(" + s1 + ")");
console.log(s2);
// Since that defined a string containing JSON, let's parse it:
const obj = JSON.parse(s2);
console.log(obj[0]);
Во втором примере с \n
escape-последовательность \n
используется на уровне литерала шаблона, что означает, что литерал шаблона содержит новую строку. Но вы хотите, чтобы это не была новая строка с точки зрения литерала шаблона, поэтому вы ... избегаете его: \\n
. Теперь это уже не новая строка для литерала шаблона, а для строкового литерала в одинарных кавычках. Теперь это то же самое, что и It's
выше: если вы не хотите, чтобы строковый литерал в одинарных кавычках использовал последовательность \n
esape, вам нужно его экранировать. Это означает, что вы получите \\\\n
:
// Define the template literal:
// 1st escaped backslash −−−vv
const s1 = `'{"0": "Thursday\\\\nFriday"}'`;
// 2nd escaped backslash −−−−−^^
console.log(s1);
// Evaluate the single-quoted string literal it defined:
const s2 = eval("(" + s1 + ")");
console.log(s2);
// Since that defined a string containing JSON, let's parse it:
const obj = JSON.parse(s2);
console.log(obj[0]);