V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zsxzy
V2EX  ›  Node.js

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

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




    分号主要用于

    const a = 10

    ;(_ => {})()

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

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

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

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

    比如:
    ;(async () => {

    })()


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


    ;`${sss}abc def`.trim()
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2653 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 09:55 · PVG 17:55 · LAX 01:55 · JFK 04:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.