JavaScript AST中出现EmptyStatement的所有场景有哪些?
JS EmptyStatement 节点相关问题解答
示例AST中EmptyStatement的对应代码
你给出的示例里,EmptyStatement 对应for循环末尾的单独分号:
原代码 for (arrL = arr.length; arrL--; arr[arrL] *= baseIn); 的循环体就是末尾的分号,本身就是空语句。转译逻辑将for循环转换为等价while结构时,把原本作为循环体的空语句保留到了IfStatement的consequent块内,就是你看到的AST节点。
所有会生成EmptyStatement的场景
- 代码中单独出现的裸分号,比如全局或块作用域下直接写
; - 条件、循环语句后直接跟分号作为执行体,比如
if (flag);、while(flag);、for(;;);、do ; while(flag); - 多个连续分号的间隔位置,比如
const num = 100;;中两个连续分号的中间部分就是空语句 - 代码块内部的单独分号,比如
{ let a = 1; ; console.log(a); }中间的单独分号 - switch分支中case/default后直接跟的分号,比如
switch(type) { case 1: ; break; }中case 1后的单独分号 - 带标签语句的执行体为空,比如
loop: ;
内容的提问来源于stack exchange,提问作者Lance Pollard
相关产品推荐
相关产品推荐

