首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Node.js
Express
PPA for Ubuntu
ppa:chris-lea/node.js
Coding
V2EX  ›  Node.js

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

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




    分号主要用于

    const a = 10

    ;(_ => {})()

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

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

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

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

    比如:
    ;(async () => {

    })()


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


    ;`${sss}abc def`.trim()
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2120 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 39ms · UTC 16:04 · PVG 00:04 · LAX 08:04 · JFK 11:04
    ♥ Do have faith in what you're doing.