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

  • 相关阅读:
    使用Jquery 来AJAX操作!
    血细胞形态异常的临床意义
    骨髓细胞检查
    保护眼睛的颜色
    php的一些技巧
    播放ASF文件无声音
    不被其他网站载入框架之内
    如何判断一个页面加载所耗费的时间
    教大家如何洗葡萄,很好吃哦!
    急性粒细胞白血病部分分化型AMLM2
  • 原文地址:https://www.cnblogs.com/mufc-go/p/3600744.html
Copyright © 2020-2023  润新知