栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

JavaScript的自动分号插入(ASI)的规则是什么?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JavaScript的自动分号插入(ASI)的规则是什么?

首先,您应该知道哪些语句受自动分号插入(为简洁起见也称为ASI)的影响:

  • 空语句
  • var
    声明
  • 表达陈述
  • do-while
    声明
  • continue
    声明
  • break
    声明
  • return
    声明
  • throw
    声明

有关ASI的具体规则,请参见规范§11.9.1自动分号插入规则

描述了三种情况:

  1. 当遇到语法不允许的记号(

    LineTerminator
    }
    )时,如果出现以下情况,将在其前插入分号:

    • 令牌与上一个令牌分隔至少一个
      LineTerminator
    • 令牌是
      }

例如

    { 12 } 3

转化为

    { 1;2 ;} 3;

NumericLiteral
1
满足所述第一条件,令牌是行终止如下。
2
满足第二条件,令牌是以下
}

  1. 当遇到令牌输入流的末尾并且解析器无法将输入令牌流作为单个完整程序进行解析时,则分号会自动插入到输入流的末尾。

例如

    a = b++c

转换为:

    a = b;++c;
  1. 如果某种语法的生产允许使用令牌,但是该生产是 受限生产 ,则会在受限令牌之前自动插入分号。

限量生产:

    Updateexpression :    LeftHandSideexpression [no LineTerminator here] ++    LeftHandSideexpression [no LineTerminator here] --ContinueStatement :    continue ;    continue [no LineTerminator here] LabelIdentifier ;BreakStatement :    break ;    break [no LineTerminator here] LabelIdentifier ;ReturnStatement :    return ;    return [no LineTerminator here] expression ;ThrowStatement :    throw [no LineTerminator here] expression ;ArrowFunction :    ArrowParameters [no LineTerminator here] => ConciseBodyYieldexpression :    yield [no LineTerminator here] * Assignmentexpression    yield [no LineTerminator here] Assignmentexpression

经典示例,带有

ReturnStatement

    return   "something";

转化为

    return;  "something";


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/393953.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号