推荐关注
› Meteor
› JSLint - a JavaScript code quality tool
› jsFiddle
› D3.js
› WebStorm
推荐书目
› JavaScript 权威指南第 5 版
› Closure: The Definitive Guide
Gem

现在,写 JS 带不带分号?

  •  
  •   Gem · Dec 3, 2015 · 9688 views
    This topic created in 3992 days ago, the information mentioned may be changed or developed.
    es6 出来,一些特性越来越接近 python ,写的时候也越来越不想带分号了,大家现在情况怎样?
    69 replies  •  2015-12-04 10:10:55 +08:00
    think2011
    think2011
    Dec 3, 2015
    1
    早期写过 coffeescript ,算是养成了简洁的习惯,现在靠 webstorm 的默认格式约束。
    think2011
    think2011
    Dec 3, 2015
    2
    想表达的是说,因为现在主要的编辑器是 webstorm ,如果缺少分号 webstorm 会提示的,所以我就靠 webstorm 的默认格式化。
    lion9527
    lion9527
    Dec 3, 2015
    3
    带吧,不过我是业余玩票的。看的书上是建议带。 ES6 还不熟。
    otakustay
    otakustay
    Dec 3, 2015❤️4
    4
    最近在着手做公司的编码规范, ES6 如果使用全带分号的写法的话,在 ES7 的 Decorator 上会遇上不小麻烦
    如果选全不带分号的话,在对象字面量里遇到 Computed Property Key 的时候会遇上些麻烦

    所以简单来说就是, ES 垃圾!
    Rice
    Rice
    Dec 3, 2015 via Android
    5
    多大的事这也问
    liqingcan
    liqingcan
    Dec 3, 2015
    6
    @Rice 为了养成好习惯,哈哈
    otakustay
    otakustay
    Dec 3, 2015
    7
    上面有点说错,不是对象字面量里遇到 Computed Property Key ,是在 Decorator 撞上一个 Computed Property Key 的时候

    大部分情况下是没关系的,只有下一条语句是以[或者(起始的时候,上面才必须分号结束,但这种语句太少太少
    FrankFang128
    FrankFang128
    Dec 3, 2015
    8
    按你的团队规范来!
    反正我是不带的。
    FrankFang128
    FrankFang128
    Dec 3, 2015
    9
    @otakustay 那就很简单了,规范写成『在必要的时候加分号』
    qhxin
    qhxin
    Dec 3, 2015
    10
    分号不是必须的吧?
    learnshare
    learnshare
    Dec 3, 2015
    11
    必须加,这是共识
    otakustay
    otakustay
    Dec 3, 2015
    12
    @FrankFang128 规范还是得写明白,事实上没多少人知道什么是“必要的时候”,不如拿这个当面试题坑人去


    @learnshare 哪来的共识,随便给你找几个:

    airbnb : https://github.com/airbnb/javascript#semicolons
    github (虽然是以 coffee 为主): https://github.com/styleguide/javascript

    虽然现在确实加分号是主流,但还没到“共识”这个程度,不加分号是可以运行得好好的
    sleepwater
    sleepwater
    Dec 3, 2015
    13
    项目内部统一就行, bootstrap 的 js 源码就是没分号的,不过个人还是习惯加分号。
    otakustay
    otakustay
    Dec 3, 2015
    14
    发错, airbnb 是以分号为主流的,找错

    顺便再给一个调查: https://twitter.com/JavaScriptDaily/status/662655515500089344
    FrankFang128
    FrankFang128
    Dec 3, 2015
    15
    @otakustay 知道,我的意思是,规范不一定是『处处用分号』或『处处不用』。
    love
    love
    Dec 3, 2015
    16
    我是不带的,代码看上去清爽多了。只要记住首字符是括号的情况下才需要前面加分号规则就行。
    learnshare
    learnshare
    Dec 3, 2015
    17
    @otakustay 我不能来反驳你,但分号是必须的
    otakustay
    otakustay
    Dec 3, 2015
    18
    @learnshare 我完全不明白不加分号会产生什么问题,是人会看不懂还是机器会看不懂……
    plqws
    plqws
    Dec 3, 2015 via Android
    19
    @otakustay 《语言精粹》里提过
    hkongm
    hkongm
    Dec 3, 2015
    20
    自定了 ESLint 规则
    我们团队规定必须写
    learnshare
    learnshare
    Dec 3, 2015
    21
    @otakustay 看自己喜好咯,大部分不加的情况不会遇到什么问题
    liuxiaoxiaochen
    liuxiaoxiaochen
    Dec 3, 2015
    22
    我觉得还是带吧 毕竟语言直接还是有差异的
    zythum
    zythum
    Dec 3, 2015
    23
    如果你确定不加分号,那么你要清楚你的代码是怎么跑的才行,不然容易出现想不到的问题。

    下面一个栗子, 如果 3 秒内没有发现为什么有问题。请乖乖把分号加回去:

    var aFunction = function () {
    alert(“我是一个方法哈哈哈”)
    }

    (function (
    //我叫一个闭包, 哈哈哈
    ) {})
    aivier
    aivier
    Dec 3, 2015
    24
    过去,现在,将来,都写 =_=
    luoway
    luoway
    Dec 3, 2015
    25
    return
    false;
    fds
    fds
    Dec 3, 2015
    26
    建议还是能加就加。
    如果习惯 python ,那么建议尝试下 coffeescript ,分号大括号都不用啦。
    love
    love
    Dec 3, 2015
    27
    @zythum 你这个不能说明什么问题,因为既然加入不加分号党那一定会遵守首字符 ( [ 前加分号的规定。
    tommyZZM
    tommyZZM
    Dec 3, 2015
    28
    源代码肯定带啊,一切按照 jslint 走就好啦。

    反正后面还要代码合并压缩的
    chemzqm
    chemzqm
    Dec 3, 2015
    29
    http://blog.izs.me/post/2353458699/an-open-letter-to-javascript-leaders-regarding
    记住几点规则就可以不带了。
    自打不带分号以后,不仅代码码起来更加流畅,看上去也更优雅了😀
    chopper
    chopper
    Dec 3, 2015
    30
    我只想静静的看你们把缩进换行都去掉
    sox
    sox
    Dec 3, 2015
    31
    To semicolon or not to semicolon; that is **NOT** a question

    https://github.com/yyx990803/semi
    lifeTech
    lifeTech
    Dec 3, 2015
    32
    加分号吧,可阅读性和维护性都更好,不要偷这懒
    jacobbubu
    jacobbubu
    Dec 3, 2015
    33
    我是能不加就不加。但是一旦加了,就要坚持都加。
    daysv
    daysv
    Dec 3, 2015
    34
    加加加加加 webstorm 就是这么烦
    zythum
    zythum
    Dec 3, 2015
    35
    @love 你们有耐心看懂我意思。 "如果 3 秒内没有发现为什么有问题。请乖乖把分号加回去"。
    muzuiget
    muzuiget
    Dec 3, 2015
    36
    一定要加,不加是埋雷作死行为。
    kslr
    kslr
    Dec 3, 2015
    37
    习惯了
    18000rpm
    18000rpm
    Dec 3, 2015 via iPad
    38
    我记得玉伯在博客里也提倡不加,这样的人还是有一些影响力的
    jydeng
    jydeng
    Dec 3, 2015❤️1
    39
    还是要加,不然感觉不对, c#写习惯了。
    hbkdsm
    hbkdsm
    Dec 3, 2015 via Android
    40
    vue
    bootstrap
    npm

    这些项目的 JS 代码都不加分号。
    exoticknight
    exoticknight
    Dec 3, 2015
    41
    可以不加
    zythum
    zythum
    Dec 3, 2015
    42
    @hbkdsm

    然而
    angular
    ember
    jquery
    react

    这些项目的 JS 代码都加分号。
    18000rpm
    18000rpm
    Dec 3, 2015
    43
    JS 写的少。搜了一下,原来这个争论已经有些历史了

    http://www.zhihu.com/question/20298345
    Phariel
    Phariel
    Dec 3, 2015 via Android
    44
    @daysv 点赞 强迫症不能忍 加上后 warning 消失才舒服。。。
    hbkdsm
    hbkdsm
    Dec 3, 2015 via Android
    45
    @zythum 所以这是一个风格问题呀。有 Java, PHP 背景的倾向于加分号,有 Python, Ruby 背景的倾向于不加,按照团队的 Style guide 来就好。
    behappy
    behappy
    Dec 3, 2015
    46
    团队不要求加。。。
    但是还是觉得加分好比较好。
    SilentDepth
    SilentDepth
    Dec 3, 2015
    47
    我想问一下,主张不加分号的理由或者原因是什么?
    an168bang521
    an168bang521
    Dec 3, 2015
    48
    我基本都是加的,不加分号感觉没有结束一样,会感觉心里怪怪的;
    webStorm 里也会提示;
    加不加看个人习惯把,如果不加,压缩 JavaScript 代码时候,不给力的压缩网站,可能会出现未知错误(一般情况下,有些地方不加分号压缩好像也没啥事);
    还有就是印象中好像在 JavaScript 高程三还是那本书里看到,说如果不加分号做结束,浏览器会自动判断并且给适当的位置添加分号进行解析;如果加了分号,就不需要浏览器去判断,可以直接解析代码,说是可以提高浏览器性能;
    感觉还是推荐加,不加分号总觉得怪怪的;
    xmbaozi
    xmbaozi
    Dec 3, 2015 via Android
    49
    带,除了 d3js
    FrankFang128
    FrankFang128
    Dec 3, 2015
    50
    说 WebStorm 提示的,都是不会配置么?
    zhuangzhuang1988
    zhuangzhuang1988
    Dec 3, 2015
    51
    加, 肯定得加入的, 即使我用 typescript 都加入的
    sox
    sox
    Dec 3, 2015
    52
    知道什么时候不加有问题,所以不加,只在必须加的是后加。

    比如楼上某处的

    ;(function ...
    Tink
    Tink
    Dec 3, 2015
    53
    不带啊
    BOYPT
    BOYPT
    Dec 3, 2015
    54
    python 有强制缩进,每一行很明确; js 没这个特性,必须加。
    love
    love
    Dec 3, 2015
    55
    @BOYPT 莫明奇妙的推论, js 没有强制缩进不是有花括号吗,这和加不加分号有什么关系
    love
    love
    Dec 3, 2015
    56
    而且很多有影响力的项目不加分号说明这种做法是完全没有问题的,这只是个象缩进用 tab 还是空格一样的风格问题,比如牛 b 的 rackt 家的所有项目都不加分号。
    BOYPT
    BOYPT
    Dec 3, 2015
    57
    @love 缩进是没什么关系,比如很多 jquery 代码是这样的

    $.ajax()
    .done(function () {blablabla;})
    .fail(function () {blablabla;})
    .always(function () {blablabla;});


    我刚才稍微想了下觉得是 python 强制缩进所以不能这么用,但其实还是语言设计上的区别,不仅是缩进引起。
    wizardoz
    wizardoz
    Dec 3, 2015
    58
    不带分好编辑器会警告,所以我带
    xwartz
    xwartz
    Dec 3, 2015
    59
    我也不喜欢写分号,但是团队已有项目写分号,只有遵循了。
    M4ster
    M4ster
    Dec 4, 2015
    60
    一般都用 CoffeeScript , IDE 对它的支持也好。
    pynix
    pynix
    Dec 4, 2015
    61
    能不用则不用。。。
    xifangczy
    xifangczy
    Dec 4, 2015
    62
    前端丢来的 js 都是不带分号的,因为一次 BUG 因为没有分号的原因以后每次都要求要带上分号...
    babytomas
    babytomas
    Dec 4, 2015 via Android
    63
    document.write("我觉得分号还是很有必要的,这个看团队要求吧");
    ghostheaven
    ghostheaven
    Dec 4, 2015
    64
    坚持加分号 30 年
    zeroten
    zeroten
    Dec 4, 2015 via Android
    65
    弱弱问一下,不加分号会不会影响 js 压缩
    onlyice
    onlyice
    Dec 4, 2015
    66
    当年写 C++ 的时候觉得写 JS 也要加,现在写 Python 觉得 JS 能不加就不加。
    Felldeadbird
    Felldeadbird
    Dec 4, 2015
    67
    写!你做手工压缩的时候,你会发现没有分号会导致 JS 执行失败。当然大部分开源的压缩库都会处理的。
    sxd
    sxd
    Dec 4, 2015
    68
    对 我发现好几个老外出教程 都不写分号了 还以为是趋势了...
    dong3580
    dong3580
    Dec 4, 2015
    69
    @sxd
    还有人喜欢双引,有人喜欢引号,
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1904 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 156ms · UTC 09:05 · PVG 17:05 · LAX 01:05 · JFK 04:05
    ♥ Do have faith in what you're doing.