Overview
Everyone loves LATEX so ESNext will likely allow tagged template strings to contain backslashes on any sequence - even ones that look like they might contain an invalid Unicode escapes.
In other words, something like
is now valid, whereas previously it would be considered an error.
Reference: https://tc39.github.io/proposal-template-literal-revision/
As of this writing, the linked proposal is at Stage 3.
Notes
This restriction lift doesn't apply to untagged template strings. For example:
// All of these are still invalid.letbad=`bad escape sequence: \unicode`;letbracingOurselves= `\u{shouldntDoThis}`;let theWorst = `\xtremelybad`;Because there is no appropriate representation for a "cooked" string that contains one of these escapes, the returned value at a position on the top-level array will be undefined, but the raw representation will be available. For example:
functiontag(strs){console.log(strs[0]===undefined);console.log(strs.raw[0]==="\\unicode and \\u{55}");}
// Prints 'true' twice.
tag\unicode and \u{55}
Proposed Emit
Input:
letx=tag`\u{hello}${100} \xtraordinary${200} wonderful ${300} \uworld`;Output:
varx=(_a=[undefined,undefined," wonderful ",undefined],_a.raw=["\\u{hello} "," \\xtraordinary "," wonderful "," \\uworld"],tag(_a,100,200,300));
Overview
Everyone loves LATEX so ESNext will likely allow tagged template strings to contain backslashes on any sequence - even ones that look like they might contain an invalid Unicode escapes.
In other words, something like
is now valid, whereas previously it would be considered an error.
Reference: https://tc39.github.io/proposal-template-literal-revision/
As of this writing, the linked proposal is at Stage 3.
Notes
This restriction lift doesn't apply to untagged template strings. For example:
Because there is no appropriate representation for a "cooked" string that contains one of these escapes, the returned value at a position on the top-level array will be
undefined, but the raw representation will be available. For example:// Prints 'true' twice.
tag
\unicode and \u{55}Proposed Emit
Input:
Output: