zoukankan      html  css  js  c++  java
  • js 自动插入分号

    先来看一个例子:

    function get(){
        return 
        {
            a:1
        }
    
    }
    var r=get();
    console.log(r);

    似乎r的值应该是{a:1},然而运行结果却是undefined,这就得从ecmascript的分号自动插入规则说起。

    js的自动插入分号有三个规则:

    1,从左向右解析程序,当遇到不符合词法文法产生式的token,只要满足下面条件之一就在违规token前自动插入分号:

    a,至少有一个行结束符分隔了违规token和前一个token.

    b,违规token是}

    function a(){alert("function");}
    a
    ()

    这个会弹出警告框,因为()跟在a后面是合法的,所以不会插入分号。

     

    2,从左到右解析程序,tokens 输入流已经结束,当解析器无法将输入 token 流解析成单个完整 ECMAScript 程序 ,那么就在输入流的结束位置自动插入分号。

    3,从左到右解析程序时遇到受限token(即该token与前边的token不能插入换行符,否则运行结果不符合预期)时,会在受限token前插入分号。

    受限token有 后缀表达式,continue break return throw。

    例子:

    var a=1,b=1
    a
    ++
    b
    console.log("a:",a);
    console.log("b:",b);

    结果是a=1,b=2,所以在a后面插入了分号。

  • 相关阅读:
    BETA 版冲刺前准备
    第十一次作业
    Alpha 冲刺 (10/10)
    Alpha 冲刺 (9/10)
    Alpha 冲刺 (8/10)
    Alpha 冲刺 (7/10)
    Alpha 冲刺 (6/10)
    Alpha 冲刺 (5/10)
    Alpha 冲刺 (4/10)
    抽奖系统现场编程
  • 原文地址:https://www.cnblogs.com/mufc-go/p/3600744.html
Copyright © 2011-2022 走看看