Javascript do-while 语句的自动分号插入
Javascript automatic semicolon insertion for do-while statements
自 ES6 起,已为 automatic semicolon insertion 的规则 1 添加了一个新案例:
The previous token is ) and the inserted semicolon would then be
parsed as the terminating semicolon of a do-while statement (13.7.2).
这样可以避免行终止和编写丑陋的代码,例如:
do {} while (false) var a = 42
这条规则背后的基本原理是什么?一些有用的用例?
我很确定在 ES2015 中添加的 "case" 只是为了标准化浏览器 已经实施的规则 以便与写得非常糟糕的 (或奇怪地缩小)脚本。它不完全是一个 新 功能,它是规范的一个调整,以符合浏览器已经在做的事情。
例如,您的代码段在 2013 年发布的 IE11 中运行:
do {} while (false) var a = 42;
console.log('no parse errors');
自 ES6 起,已为 automatic semicolon insertion 的规则 1 添加了一个新案例:
The previous token is ) and the inserted semicolon would then be parsed as the terminating semicolon of a do-while statement (13.7.2).
这样可以避免行终止和编写丑陋的代码,例如:
do {} while (false) var a = 42
这条规则背后的基本原理是什么?一些有用的用例?
我很确定在 ES2015 中添加的 "case" 只是为了标准化浏览器 已经实施的规则 以便与写得非常糟糕的 (或奇怪地缩小)脚本。它不完全是一个 新 功能,它是规范的一个调整,以符合浏览器已经在做的事情。
例如,您的代码段在 2013 年发布的 IE11 中运行:
do {} while (false) var a = 42;
console.log('no parse errors');