包括 JSON,即 JSON ⊂ ECMAScript
隨著提案 JSON ⊂ ECMAScript,JSON 成為 ECMAScript 的語法子集。如果你對此感到驚訝,並非只有你一個!
舊的 ES2018 行為
在 ES2018 中,ECMAScript 的字串文本不能包含未轉義的 U+2028 行分隔符和 U+2029 段落分隔符字元,因為即使在該上下文中,它們仍被認為是行終結符:
// 包含原始 U+2028 字元的字串。
const LS = '
';
// → ES2018: 語法錯誤
// 一個由 `eval` 生成的,包含原始 U+2029 字元的字串:
const PS = eval('"\u2029"');
// → ES2018: 語法錯誤
這是有問題的,因為 JSON 字串_可以_包含這些字元。因此,開發者在嵌入有效的 JSON 到 ECMAScript 程式中時,必須實現特殊的後處理邏輯來處理這些字元。沒有這樣的邏輯,程式碼可能會有細微的錯誤,甚至導致安全問題。