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后面插入了分号。

  • 相关阅读:
    L84
    L83
    T57
    T56
    Listen 82
    Listen81
    PyQt(Python+Qt)学习随笔:QListView的isWrapping属性
    PyQt(Python+Qt)学习随笔:QListView的movement属性
    PyQt(Python+Qt)学习随笔:QListView的gridSize属性
    第15.20节 PyQt(Python+Qt)入门学习:QColumnView的作用及开发中对应Model的使用
  • 原文地址:https://www.cnblogs.com/mufc-go/p/3600744.html
Copyright © 2011-2022 走看看