V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
Senevan
V2EX  ›  JavaScript

做个调查,大家写 js 写分号么

  •  
  •   Senevan · 2016-06-13 00:04:20 +08:00 · 11001 次点击
    这是一个创建于 3085 天前的主题,其中的信息可能已经有所发展或是发生改变。
    Twitter 上因为这个又吵起来了= =
    我先说,我一直写分号
    第 1 条附言  ·  2016-06-13 14:14:18 +08:00

    感觉还是写的人比较多,大体上写的原因主要有:

    • 怕出错
    • 写过C、java所以习惯加分号
    • 不写感觉一行没结束

    聊这个主要是我在看vue源码的时候发现它是不加分号的,比较好奇

    第 2 条附言  ·  2016-06-13 14:16:40 +08:00
    对了还有根据 linter 决定写不写= =
    110 条回复    2016-06-14 13:13:20 +08:00
    1  2  
    hxtheone
        1
    hxtheone  
       2016-06-13 00:05:33 +08:00   ❤️ 1
    DoraJDJ
        2
    DoraJDJ  
       2016-06-13 00:08:26 +08:00 via Android   ❤️ 1
    之前写 Java 写习惯了,一直都写分号。
    如果没有分号很难判断这语句有完没完
    BOYPT
        3
    BOYPT  
       2016-06-13 00:08:36 +08:00
    写。然后看了不写派的说法好像很有道理,但是我已经忘了道理是啥……代码里面继续写
    techme
        4
    techme  
       2016-06-13 00:10:14 +08:00
    写习惯了,改不掉
    BGLL
        5
    BGLL  
       2016-06-13 00:12:36 +08:00
    C++ 写习惯了,所以 JavaScript 也写分号
    然而 JavaScript 写了段时间,再写 C++ 发现其实时不时在漏分号.....
    broadliyn
        6
    broadliyn  
       2016-06-13 00:17:09 +08:00
    var xxx=xxxxx; //写分号

    var fx = function(){

    } //不写

    $(xxx).on('click',function(){

    }); //写



    。。。。。 java 写惯了。。
    liqingcan
        7
    liqingcan  
       2016-06-13 00:19:37 +08:00
    liqingcan
        8
    liqingcan  
       2016-06-13 00:19:51 +08:00
    不写总感觉少了点什么
    visonnn
        9
    visonnn  
       2016-06-13 00:22:00 +08:00
    写啊

    主要是给自己看的
    Mutoo
        10
    Mutoo  
       2016-06-13 00:24:07 +08:00
    写了一年 lua 之后,再写 javascript 就经常忘记写分号。
    qqqppp9998
        11
    qqqppp9998  
       2016-06-13 00:28:29 +08:00 via iPhone
    不写
    johnhsm2333
        12
    johnhsm2333  
       2016-06-13 00:28:51 +08:00 via Android
    不写了
    ceoimon
        13
    ceoimon  
       2016-06-13 00:29:28 +08:00
    写与不写随意切换, Linter + formatter
    itlr
        14
    itlr  
       2016-06-13 00:29:42 +08:00
    配好了 linting 自己就不需要特别关注了,习惯上是写的,忘记了 linting 工具能发现就可以。
    milklee
        15
    milklee  
       2016-06-13 00:32:17 +08:00
    不写了
    Wangxf
        16
    Wangxf  
       2016-06-13 00:37:54 +08:00
    写,不写感觉少了点啥,而且压缩 js 的时候避免出错
    ChiangDi
        17
    ChiangDi  
       2016-06-13 00:39:52 +08:00 via Android
    本来是写得,后来经过仔细思考和实际体验之后决定不写了。
    yeyeye
        18
    yeyeye  
       2016-06-13 01:46:15 +08:00
    Tampermonkey 会有警告 如果不写
    YUX
        19
    YUX  
       2016-06-13 01:48:07 +08:00
    Linter 让写就写
    df4VW
        20
    df4VW  
       2016-06-13 01:49:02 +08:00
    不写,然后 asi
    ericls
        21
    ericls  
       2016-06-13 02:15:44 +08:00 via iPhone
    不写
    shisaq
        22
    shisaq  
       2016-06-13 06:48:35 +08:00
    [jshint]( http://jshint.com/) 让写就写
    bumz
        23
    bumz  
       2016-06-13 07:17:13 +08:00
    凡是可以写分号的地方,都会写

    比如

    var a = function() {

    };

    do {

    } while (true);

    这样的好处是不必耗费脑力纠结语句有没有结束(人工在大脑中执行一次自动分号插入的机制有点烧)

    以及那个自动分号插入的机制有点坑,比如

    (function() {console.log('a')})()
    (function() {console.log('a')})()

    就会报错

    (function() {console.log('a')})();
    (function() {console.log('a')})();

    则不会。

    因此任何时候都写分号好处巨大,省略分号流毒深远啊
    bitkwan
        24
    bitkwan  
       2016-06-13 07:46:38 +08:00 via Android
    写啊… 写 php 习惯了… var 定义变量时都顺手加上 $了…然后又去了🌚👎
    zcbenz
        25
    zcbenz  
       2016-06-13 07:48:32 +08:00
    写了好几年带分号的,转 Standard JS 以后就不带了。
    wwqgtxx
        26
    wwqgtxx  
       2016-06-13 08:01:49 +08:00 via Android
    写,主要是用 idea 写的,不写分号编辑器回提示的
    flydogs
        27
    flydogs  
       2016-06-13 08:13:52 +08:00
    不写总觉得别扭
    taijia
        28
    taijia  
       2016-06-13 08:17:07 +08:00 via Android
    写,不然压缩后会出现莫名其妙的错
    qqmishi
        29
    qqmishi  
       2016-06-13 08:41:18 +08:00 via Android
    写,不写等默认加的话有坑
    textworld
        30
    textworld  
       2016-06-13 08:47:15 +08:00
    不写的话,代码压缩的时候不是会出错么
    aivier
        31
    aivier  
       2016-06-13 08:48:56 +08:00
    不写的不是异教徒么?
    rekulas
        32
    rekulas  
       2016-06-13 09:04:59 +08:00   ❤️ 1
    除非是想极限压缩,否则都应该补完的,不写也能正常执行是 js 引擎的编译纠正机制

    现在很多大牛貌似推荐不写分号的风格,但我觉得在这之前首先得解决部分结构不写分号会异常的问题吧
    sheep3
        33
    sheep3  
       2016-06-13 09:10:37 +08:00 via Android
    写,习惯写 Java
    clino
        34
    clino  
       2016-06-13 09:15:19 +08:00
    不写 不明白为什么要写
    moe3000
        35
    moe3000  
       2016-06-13 09:19:18 +08:00
    既然是 javascript 就按照 java 的习惯来呗 doge
    metrue
        36
    metrue  
       2016-06-13 09:20:21 +08:00
    自己是不写,可是公司的 eslint 统一配置,必须写。
    123s
        37
    123s  
       2016-06-13 09:25:41 +08:00
    以前不写,后来写。不写有时候会有问题
    tobeyouth
        38
    tobeyouth  
       2016-06-13 09:28:28 +08:00
    不写
    Rsl
        39
    Rsl  
       2016-06-13 09:28:36 +08:00
    开始 ES2015 后就不写了. 看起来感觉舒服了不少.
    cloverstd
        40
    cloverstd  
       2016-06-13 09:40:16 +08:00
    @Rsl 我也是,用 ES6 之后就不写分号了
    ayiis
        41
    ayiis  
       2016-06-13 09:43:48 +08:00
    代码不是一个人写的,为了兼顾水平不一致的队友以及后来的维护者,写分号
    而又因为有几种情况是必须写分号的,所以统一在所有情况下,写分号
    Haku
        42
    Haku  
       2016-06-13 09:46:34 +08:00
    不写,虽然很不爽不写,但我就是不写= =
    learnshare
        43
    learnshare  
       2016-06-13 09:58:55 +08:00
    代码是给人看的,写。机器执行不管这些东西
    wbt
        44
    wbt  
       2016-06-13 10:13:24 +08:00
    写。
    BruceYuan
        45
    BruceYuan  
       2016-06-13 10:15:45 +08:00
    正常都写吧,哪怕是 python 入门也会写吧
    lixiaohan
        46
    lixiaohan  
       2016-06-13 10:19:56 +08:00
    不写的话 有时候会犯一些很低级的错误,而且查错误的时候需要查半天, 到时候你就该骂自己蠢了,然后你就记住了, 以后就知道写了
    ljcarsenal
        47
    ljcarsenal  
       2016-06-13 10:21:16 +08:00
    不写 webpack 自动生成。。。。
    当然 不用 webpack 的话还是写吧 低版本浏览器某些情况下会报错
    M4ster
        48
    M4ster  
       2016-06-13 10:21:46 +08:00
    难道没人用 CoffeeScript ?
    cin
        49
    cin  
       2016-06-13 10:23:09 +08:00
    不写, 没分号的代码看着舒服.
    raistlin916
        50
    raistlin916  
       2016-06-13 10:28:01 +08:00
    写 react 的时候不写,其实还好
    smallpath
        51
    smallpath  
       2016-06-13 10:34:28 +08:00
    单人项目写, lint 工具的话要我怎么办我就怎么办
    xcatliu
        52
    xcatliu  
       2016-06-13 10:36:14 +08:00
    thinkmore
        53
    thinkmore  
       2016-06-13 10:36:15 +08:00
    按照 java 的标准来写 js 写习惯了
    unknownservice
        54
    unknownservice  
       2016-06-13 10:36:21 +08:00
    被坑一次之后现在强迫症必须要写...
    exoticknight
        55
    exoticknight  
       2016-06-13 10:39:04 +08:00
    跟团队,跟项目,尽量写
    之前一直写,最近的 vue 项目因为官方脚手架没写于是跟着不写
    Arrowing
        56
    Arrowing  
       2016-06-13 10:41:34 +08:00
    写,看别人不写很别扭。
    fds
        57
    fds  
       2016-06-13 10:44:38 +08:00
    tslint 设置成 "semicolon": [true, "never"], 然后就再也不写分号了。
    之前用 coffeescript 也不写。
    pppanda
        58
    pppanda  
       2016-06-13 10:46:55 +08:00
    以前写,现在不写了
    solodxg
        59
    solodxg  
       2016-06-13 10:57:11 +08:00
    以前写的 后来 http://standardjs.com/ 不写了
    b821025551b
        60
    b821025551b  
       2016-06-13 11:00:35 +08:00
    不写分号的是不是也不压缩呢
    yurivvvvv
        61
    yurivvvvv  
       2016-06-13 11:03:10 +08:00
    hkongm
        62
    hkongm  
       2016-06-13 11:09:45 +08:00
    浏览器写
    node 不写了
    lk920724
        63
    lk920724  
       2016-06-13 11:17:21 +08:00
    panlilu
        64
    panlilu  
       2016-06-13 11:20:56 +08:00
    airbnb 规范,写分号
    Strikeactor
        65
    Strikeactor  
       2016-06-13 11:22:48 +08:00
    zhenjiachen
        66
    zhenjiachen  
       2016-06-13 11:26:36 +08:00
    写,不过有时候会忘记。
    rupert
        67
    rupert  
       2016-06-13 11:31:02 +08:00 via iPhone
    好像说写分号的都没什么充分理由, 怕压缩出问题? 合格的压缩工具肯定会处理好分号问题的吧。 我只在( [ 前加分号,基本就碰到没什么问题了
    SuperMild
        68
    SuperMild  
       2016-06-13 11:41:54 +08:00
    这才知道 Standard JS ,貌似不错啊, No configuration ,不用烦了。
    nullizer
        69
    nullizer  
       2016-06-13 11:43:08 +08:00
    plqws
        70
    plqws  
       2016-06-13 11:44:48 +08:00
    airbnb 规范,所以写
    SuperMild
        71
    SuperMild  
       2016-06-13 11:46:04 +08:00
    Can you make rule X configurable?

    No. The point of _standard_ is to save you time by picking reasonable rules so you can spend your time solving actual problems. If you really do want to configure hundreds of _eslint_ rules individually, you can always use _eslint_ directly.
    xman99
        72
    xman99  
       2016-06-13 12:55:24 +08:00
    初学的时候 老师说可以不用写的, 我觉得还是写的格式好
    VmuTargh
        73
    VmuTargh  
       2016-06-13 12:57:42 +08:00
    写,不知道为什么每次调试总是提示没有分号不能用。

    @Mutoo 窝写 lua 也一直加分号,强迫症
    an168bang521
        74
    an168bang521  
       2016-06-13 13:01:36 +08:00
    写;
    如果不写的话,会有这条代码没写完的感觉;
    kiwi95
        75
    kiwi95  
       2016-06-13 13:03:06 +08:00
    写 Go 的时候不写,写 PHP 的时候写。。
    yhxx
        76
    yhxx  
       2016-06-13 13:03:25 +08:00   ❤️ 1
    一直都是写几个字母然后 TAB ,编辑器帮我补了分号就有,不补就没有
    (我这样的是不是要被分号党和不加分号党一起吊打
    saberlily
        77
    saberlily  
       2016-06-13 13:11:20 +08:00
    写啊
    Vonex
        78
    Vonex  
       2016-06-13 13:36:23 +08:00
    写,善始善终。
    yujieyu7
        79
    yujieyu7  
       2016-06-13 13:48:57 +08:00
    以前写,试过不写之后就回不去了,太爽了
    tairan2006
        80
    tairan2006  
       2016-06-13 13:59:01 +08:00
    js 写啊…因为看起来很 C
    think2011
        81
    think2011  
       2016-06-13 14:16:59 +08:00
    不再写了,因为看起来简洁,顺便提一下,如果不写问号,一定要注意在自运行函数前要加分号,不然要出错的。

    ```js
    let a = 1; // 不加分号要死

    (() => {
    console.log(a)
    })()
    ```
    cxbig
        82
    cxbig  
       2016-06-13 14:28:25 +08:00 via iPhone
    IDE 自动补全,无所谓写不写。
    sxm
        83
    sxm  
       2016-06-13 14:45:50 +08:00
    习惯写,我有强迫症
    wmhx
        84
    wmhx  
       2016-06-13 15:22:43 +08:00
    以前写 js 很随便, 有时写有时不写,好像也无所谓, 最近做一个项目用 java 解释执行 js 片段, 不加分号各种错误,而且提示各种脑残,尤其是 var a=function(){} 这样的没有分号 java 解析提示都是什么鬼啊, 后来,后来, 后不来我就不干这个项目了.
    tanteng
        85
    tanteng  
       2016-06-13 15:28:10 +08:00
    不写 IDE 老会提示,所以还是写
    fetich
        86
    fetich  
       2016-06-13 15:42:03 +08:00
    公司项目看规定,个人练手看心情。
    ug888168
        87
    ug888168  
       2016-06-13 16:48:25 +08:00 via Android
    习惯了写
    inet6
        88
    inet6  
       2016-06-13 17:08:11 +08:00
    我习惯了写分号
    solome
        89
    solome  
       2016-06-13 17:11:40 +08:00
    es6 风格的,不写~
    jason19659
        90
    jason19659  
       2016-06-13 17:23:05 +08:00
    想起来就写。。忘了就。。反正也能跑起来。对吧
    EchoWhale
        91
    EchoWhale  
       2016-06-13 17:26:53 +08:00 via Android
    不写,有 asi
    shyling
        92
    shyling  
       2016-06-13 17:45:07 +08:00
    @BruceYuan 是不是还要写:
    lslqtz
        93
    lslqtz  
       2016-06-13 17:46:40 +08:00
    @yhxx 打死打死 2333
    muyege
        94
    muyege  
       2016-06-13 18:29:28 +08:00
    擦!写就写,不写就不写,骗分党!
    zyue
        95
    zyue  
       2016-06-13 18:39:36 +08:00
    不写就难受斯基
    Wenwei
        96
    Wenwei  
       2016-06-13 18:51:14 +08:00
    ES6 写着写着就不写分号了。

    已经习惯不写分号了。
    marshalYuan
        97
    marshalYuan  
       2016-06-13 19:36:42 +08:00
    逗号哪里做的不好么,你们干嘛还要去找分号
    motai
        98
    motai  
       2016-06-13 20:49:54 +08:00
    记得就写,忘了就算了
    xifangczy
        99
    xifangczy  
       2016-06-13 23:02:26 +08:00
    不写难受...
    SourceMan
        100
    SourceMan  
       2016-06-13 23:20:00 +08:00 via iPhone
    楼上好多一看就是项目没有上 eslint
    我写多年的分号,转 ES6 之后建议不写,改了规则,不到 2 个星期,就被纠正过来了
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2546 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 01:37 · PVG 09:37 · LAX 17:37 · JFK 20:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.