do while语句的Javascript自动分号插入
自ES6以来,增加了以下规则1的新案例: 前面的标记是),插入的分号将是 解析为do while语句的终止分号(13.7.2) 这样可以避免行终止并编写丑陋的代码,例如:do while语句的Javascript自动分号插入,javascript,ecmascript-6,automatic-semicolon-insertion,Javascript,Ecmascript 6,Automatic Semicolon Insertion,自ES6以来,增加了以下规则1的新案例: 前面的标记是),插入的分号将是 解析为do while语句的终止分号(13.7.2) 这样可以避免行终止并编写丑陋的代码,例如: do {} while (false) var a = 42 这条规则背后的理由是什么?一些有用的用例?我敢肯定,ES2015中添加的“case”只是为了标准化浏览器已经实现的规则,以便与编写糟糕(或奇怪地缩小)的脚本兼容。这并不完全是一个新特性,更重要的是它是对规范的一个调整,以符合浏览器已经在做的事情 例如,您的代码段在
do {} while (false) var a = 42
这条规则背后的理由是什么?一些有用的用例?我敢肯定,ES2015中添加的“case”只是为了标准化浏览器已经实现的规则,以便与编写糟糕(或奇怪地缩小)的脚本兼容。这并不完全是一个新特性,更重要的是它是对规范的一个调整,以符合浏览器已经在做的事情
例如,您的代码段在2013年发布的IE11中运行:
do{}while(false)var a=42;
log(“无解析错误”)代码>迷你们是我唯一能想到的。另外,我真的看不出有什么理由希望do{}while(false)var a=42
被解析为do..while
循环后跟变量声明。我认为这只是因为}
的规则,而do..while
限制之所以需要,只是因为)
不一定是语句的结尾,除非它是do..while的一部分。
,在之后的同一语句中不允许有任何其他内容。