强迫症问题: 大家写 js 是用分号还是不用分号? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zsxzy
V2EX    Node.js

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

  •  
  •   zsxzy 2018-05-21 12:15:19 +08:00 8452 次点击
    这是一个创建于 2731 天前的主题,其中的信息可能已经有所发展或是发生改变。
    加和不加又有什么优缺点.. 我是习惯了加, 从 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
    {}里的全不加。
    变量、常量全部加。
    fengyj
        35
    fengyj  
       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     Solana     5729 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 02:33 PVG 10:33 LAX 18:33 JFK 21:33
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86