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

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

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




    分号主要用于

    const a = 10

    ;(_ => {})()

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

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

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

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

    比如:
    ;(async () => {

    })()


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


    ;`${sss}abc def`.trim()
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   924 人在线   最高记录 4385   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 21ms · UTC 19:42 · PVG 03:42 · LAX 11:42 · JFK 14:42
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1