zoukankan      html  css  js  c++  java
  • JS 代码中到底加不加分号

    背景

    在写自动执行函数时

    vm.$watch('datas', function() {
        console.log(vm.datas);
    })
    (function () {
        console.log('test');
    })()

    出现莫名错误:

    Uncaught TypeError: vm.$watch(…)(…) is not a function

    解决方法:

    vm.$watch('datas', function() {
        console.log(vm.datas);
    );
    (function () {
        console.log('test');
    })()

    一个分号搞定。

    自此,又引出 JavaScript 代码中要不要加分号的经典话题

    分号

    在 C 语言中,分号是语句结束的标志,在语句结束的地方一定要以分号结束。而 JavaScript 的分号却是可选的,若语句都各占一行,则可以省略分号。

    ASI 机制(Automatic semicolon insertion)

    JavaScript 中的 ASI 机制,允许我们省略分号。ASI 机制不是说在解析过程中解析器自动把分号添加到代码中,而是说解析器除了分号还会以换行为基础按一定的规则作为断句的依据,从而保证解析的正确性。

    ASI 规则

    • 新行并入当前行构成非法语句时,自动插入分号
    • continuereturnbreakthrow 后自动插入分号

      return => return; 
      a+b a+b;

    • ++-- 后缀表达式作为新行开始,会在行首自动插入分号
    • 代码块的最后一个语句会自动插入分号

    注意

    • 新行以 ( [ / + - * % , . 开始,很容易与上一行未加分号的代码成整体而一起解析,这明显不是我们想要的结果

    结论

    为增强代码可读性,减少歧义,个人意见是在语句结束时加上分号

    PS:

      • 不要将 ++ 或 -- 放在同一行
      • 如果 return 后有参数,不要将参数放在独立的行
      • 不要将括号的开始放在新的一行,理由为上一条
  • 相关阅读:
    [From 3.1~3.4]
    [From 2.7]简单应用程序部署(程序集打包)
    [From 2.4]C#编译器和程序集链接器(以及一些它们的命令开关)
    [From 2.3]托管PE文件的组成
    [From 1.1~1.2]CLR的执行模型
    项目开发日志:Build AssetBundle——SpriteAtlas(已解惑)
    JDK所有版本下载链接
    Maven
    SEO优化
    Mysql字符集
  • 原文地址:https://www.cnblogs.com/liluxiang/p/9285003.html
Copyright © 2011-2022 走看看