V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
zsxzy
V2EX  ›  Node.js

强迫症问题: 大家写 js 是用分号还是不用分号?

  •  
  •   zsxzy · May 21, 2018 · 8806 views
    This topic created in 2902 days ago, the information mentioned may be changed or developed.
    加和不加又有什么优缺点.. 我是习惯了加, 从 c, c++, java 一路走过来的习惯
    50 replies    2018-06-04 12:41:58 +08:00
    noe132
        1
    noe132  
       May 21, 2018
    不加。
    多层括号的时候,你很难区分哪里要加哪里不能加。干脆不加更方便
    jecshcier
        2
    jecshcier  
       May 21, 2018 via iPhone
    swift 去掉了所有分号。跟着苹果走
    firede
        3
    firede  
       May 21, 2018
    以前习惯加,现在不加,这种事儿交给 prettier 管。
    vsomeone
        4
    vsomeone  
       May 21, 2018 via iPhone
    更倾向于加,因为不加会遇到某些特殊情况,脑容量小不想花时间去额外记忆
    VDimos
        5
    VDimos  
       May 21, 2018 via Android
    加分号习惯好,不加很容易出毛病
    SuperMild
        6
    SuperMild  
       May 21, 2018
    由于现在的编辑器非常智能,配置好编辑器的 lint 功能,会有错误提示,加不加都很方便,跟着提示做就行,或者自动格式化。
    yulitian888
        7
    yulitian888  
       May 21, 2018
    加分号为好,在压缩的时候更安全。
    比如这个例子
    var reg = //;
    reg.test("xxxxxxxxx");
    这是一个正则表达式,只是内容为空(实际发生的可能性比较小,只是举例而已)
    不加分好的话,一压缩,呵呵哒~~~
    lamada
        8
    lamada  
       May 21, 2018
    eslint standard
    maichael
        9
    maichael  
       May 21, 2018
    不加,上面说的不加分号带来的问题,有 Lint 完全能够避免。
    voidcomma
        10
    voidcomma  
       May 21, 2018 via iPhone
    以前不喜欢加,但是 prettier 会给我加上,而且 JS 中有些语句不加分号会出问题,所以现在都加了。
    yulitian888
        11
    yulitian888  
       May 21, 2018
    @maichael 用的 VS 的 Resharper 插件会推荐加。
    实际上在压缩的时候,还是有一些别的情况会出问题的
    a = b;(function(){ return 100 })();
    a = b(function(){ return 100 })();
    的区别就......
    murmur
        12
    murmur  
       May 21, 2018
    当然要加
    后端加的前端也加
    yulitian888
        13
    yulitian888  
       May 21, 2018
    @maichael 补充一下,举这几个例子的一个前提是,代码不应依赖于开发环境和工具。因为不是所有人都是用的统一的开发环境和工具(而且即使同一个工具,不同版本之间也可能有差异)。
    jason19659
        14
    jason19659  
       May 21, 2018
    想起来就用,忘了就没了
    LeungJZ
        15
    LeungJZ  
       May 21, 2018
    不加分号。tab = 4 个空格。驼峰命名。
    来吧开战吧。




    分号主要用于

    const a = 10

    ;(_ => {})()

    这里,IIFE 一压缩就错。
    但是不喜欢分号所以全部改成

    !(_ => {})()
    Justin13
        16
    Justin13  
       May 21, 2018 via Android
    加,必须加,这是好习惯
    ipwx
        17
    ipwx  
       May 21, 2018
    @jecshcier 强烈反对。JS 就是 JS,凭什么和 Swift 走?
    burby
        18
    burby  
       May 21, 2018
    楼主了解一下 standard 或是 google style
    选一个一直用下去就可以了,但是一定要团队统一
    格式上没有必要花太多时间,
    毕竟编辑器做的比人更精确更好
    banricho
        19
    banricho  
       May 21, 2018
    没事找事,爱咋写咋写,没有优劣
    说不加分号会出事的,怕是不知道现代化的生产力工具完全可以避免这些问题
    autoxbc
        20
    autoxbc  
       May 21, 2018 via iPhone
    就说一点,前置分号那几个特例非常丑
    wwdyy
        21
    wwdyy  
       May 21, 2018
    不加
    SourceMan
        22
    SourceMan  
       May 21, 2018
    源码不加
    nikolai
        23
    nikolai  
       May 21, 2018
    跟着 eslint 走
    MonoLogueChi
        24
    MonoLogueChi  
       May 21, 2018 via Android
    个人习惯加分号,因为我写的是 Java Script
    salamanderMH
        25
    salamanderMH  
       May 21, 2018
    没什么关系
    newbieo0O
        26
    newbieo0O  
       May 21, 2018
    开个 lint, 分分钟治好你的病,也可能是他的病,哈哈 。
    要求 2 个空格缩进,少了这个,少了那个。一下子就把你治服贴了。
    66beta
        27
    66beta  
       May 21, 2018
    8 楼 +1
    bucky
        28
    bucky  
       May 21, 2018
    不加分号怕出事儿,于是加上,不带伞怕下雨,于是一年 365 天,天天带伞出门,额...
    lijsh
        29
    lijsh  
       May 21, 2018
    想加就加,不加就不加,但是规范要做好,编辑器可以帮你自动加减的。
    marcong95
        30
    marcong95  
       May 21, 2018
    公司代码要求加,个人项目基本上 Standard。实际写代码看心情打,反正有 ESLint
    jecshcier
        31
    jecshcier  
       May 21, 2018 via iPhone
    @ipwx 因没有分号整体代码上看起来比较美观,如果纯粹以感性角度来看的话。

    我觉得苹果应该也是这么想的。
    kslr
        32
    kslr  
       May 21, 2018
    eslint 让我加
    h1367500190
        33
    h1367500190  
       May 21, 2018
    不加,prettier。就算手动加也是前置,或者使用 void
    saran
        34
    saran  
       May 21, 2018
    {}里的全不加。
    变量、常量全部加。
    fengyj
        35
    fengyj  
       May 21, 2018 via Android
    先学的 c/c++,然后有时 Java,自学 js 的时候发现可以随意,然后自己就默认加上
    flight2006
        36
    flight2006  
       May 21, 2018 via Android
    java 程序员写 js 大部分加,有时不加,同一个文件里统一
    juicy
        37
    juicy  
       May 21, 2018
    加不加都可以,重要的是要符合团队的规范,团队里都加,就应该加。
    bumz
        38
    bumz  
       May 21, 2018
    当然是加分号
    randyo
        39
    randyo  
       May 21, 2018 via Android
    用分号习惯好,反正有 eslint 帮你做
    CodingMonkey
        40
    CodingMonkey  
       May 21, 2018
    不加分号,浑身难受
    doubleflower
        41
    doubleflower  
       May 21, 2018
    @yulitian888 你用的人肉 JS 压缩工具??
    ipwx
        42
    ipwx  
       May 21, 2018
    @jecshcier 我认为“没有歧义”以及“简单易懂”才是真正的美观。Python 语法禁止直接换行,因此不加分号。JS 允许换行,所以要分号保证没有歧义、以及一眼望过去就能知道代码在干什么。
    jiangzhuo
        43
    jiangzhuo  
       May 21, 2018
    jscs
    我记得哪次提议又说要加分号嘞
    能不加就不加 但是有时候不得不写分号。慢慢的看惯了行首分号还有点萌
    james2013
        44
    james2013  
       May 21, 2018
    加的,用惯了 Java,习惯加分号,即使偶尔忘记加了,下次看到了还会补上
    yulitian888
        45
    yulitian888  
       May 22, 2018
    @doubleflower 看不出来那些只是简单示例一下吗?或者你从没遇到过压缩出错的代码?这也要喷,姿势不对啊!
    doubleflower
        46
    doubleflower  
       May 22, 2018
    @yulitian888 麻烦举个压缩出错的代段片段,举出来我服
    yulitian888
        47
    yulitian888  
       May 22, 2018
    @doubleflower 我觉得没必要跟着你的思路做什么证明,你的言论只能证明,你真没见过!
    没见过世面还这么嚣张的人,通常不需要回复
    拉黑再见!
    hanzichi
        48
    hanzichi  
       May 22, 2018
    以前我是绝对的加分号党,4 空格党。。

    现在,不加,2 空格,as lazy as posible ...
    lizhenda
        49
    lizhenda  
       May 22, 2018
    装个 Prettier 自动格式化
    e8c47a0d
        50
    e8c47a0d  
       Jun 4, 2018
    坚决不用分号,而且碰到那些需要分号的语言通常都是直接抵制……
    https://standardjs.com/readme-zhcn.html
    这里面有说,除了以 ( 或 [ 或 ` 开头的行,前面要加分号。其他任何地方都不用加分号。

    比如:
    ;(async () => {

    })()


    ;['abc', null].toString()


    ;`${sss}abc def`.trim()
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2491 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 110ms · UTC 09:55 · PVG 17:55 · LAX 02:55 · JFK 05:55
    ♥ Do have faith in what you're doing.