• Js中分号使用总结


    作者:尤雨溪
    链接:https://www.zhihu.com/question/20298345/answer/49551142
    来源:知乎
    著作权归作者所有,转载请联系作者获得授权。

    没有应该不应该,只有你自己喜欢不喜欢。JavaScript 语法长得 C-like 不代表它本质上和 C 是一类语言,所有直觉性的 “当然应该加分号” 都是保守的、未经深入思考的草率结论。后来新设计的语言里可选分号的多得去了,光是 “可以加分号但是大家都不加” 的语言就有:Go, Scala, Ruby, Python, Swift, Groovy...

    至于说 “很难总结什么时候加不加”,其实真的很简单。真正会导致上下行解析出问题的 token 有 5 个:括号(),方括号[],正则开头的斜杠/,加号+,减号-。我还从没见过实际代码中用正则、加号、减号作为行首的情况,所以总结下来就是一句话:一行开头是括号或者方括号的时候加上分号就可以了,其他时候全部不需要。其实即使是这两种情况,在实际代码中也颇为少见。

    另外,restricted production 这个东西(也就是导致 return 后面换行会自动插入分号的机制),不管你加不加分号你都是得搞懂了才能不被坑的,和加不加分号没有什么关系。

    更多细节,可以看我曾经给过的一个 talk:Hacking Semicolons by Evan You

    最后,上点代码好了,Vue.js 的代码全部不带分号:yyx990803/vue · GitHub
    另外说到工具,我确实写了一个,全自动帮你批量添加或者删除分号:yyx990803/semi · GitHub 做成 Git pre-commit hook,选择你自己喜欢的风格就可以。
     
    总结:
    1. 自己书写代码的时候: 一条完整的语句加分号, 函数声明不加分号 
    // 1.  加分号的语句
    var jason = "zeng";
    var eason = function () {
          // 其他语句...
    };
    (function($) {
          // 其他语句 ...
    })(jQuery);
    ++a;
    b++;
    
    // 2. 不加分号的声明
    function myfunction() {
          // 其他语句 ...
    }

    2. 结合别人代码的时候: 发现他人有不加分号的特点的时候, 自己在在语句前面加分号

    ;(function($) {
         // 其他语句 ...
    })(jQuery);
    
    ;++a;

    3. return 不能单独占一行

    var g1 = function () {
         return "test";  
    }
    
    var g2 = function () {
         return {
            a: 1,
            b: 2
        }  
    }
    
    var g3 = function () {
         return [
             "one",
             "two"
         ];
    }        
  • 相关阅读:
    设计模式(四)多例模式
    python之decode、encode及codecs模块
    python pyqt
    python读取命令行参数的方法
    python urllib、urlparse、urllib2、cookielib
    百度文档免费下载
    python之控制台(console)颜色显示
    python修改注册表
    python之爬虫
    xmlns和xsi之schemaLocation
  • 原文地址:https://www.cnblogs.com/ZengYunChun/p/6189512.html
Copyright © 2020-2023  润新知