zsxzy
V2EX  ›  Node.js

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

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




    分号主要用于

    const a = 10

    ;(_ => {})()

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

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

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

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

    比如:
    ;(async () => {

    })()

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

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