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

发布于 1周前 作者 h691938207 来自 nodejs/Nestjs

Nodejs强迫症问题: 大家写 js 是用分号还是不用分号?
加和不加又有什么优缺点… 我是习惯了加, 从 c, c++, java 一路走过来的习惯

51 回复

不加。
多层括号的时候,你很难区分哪里要加哪里不能加。干脆不加更方便


swift 去掉了所有分号。跟着苹果走

以前习惯加,现在不加,这种事儿交给 prettier 管。

更倾向于加,因为不加会遇到某些特殊情况,脑容量小不想花时间去额外记忆

加分号习惯好,不加很容易出毛病

由于现在的编辑器非常智能,配置好编辑器的 lint 功能,会有错误提示,加不加都很方便,跟着提示做就行,或者自动格式化。

加分号为好,在压缩的时候更安全。
比如这个例子
var reg = //;
reg.test(“xxxxxxxxx”);
这是一个正则表达式,只是内容为空(实际发生的可能性比较小,只是举例而已)
不加分好的话,一压缩,呵呵哒~~~

eslint standard

不加,上面说的不加分号带来的问题,有 Lint 完全能够避免。

以前不喜欢加,但是 prettier 会给我加上,而且 JS 中有些语句不加分号会出问题,所以现在都加了。

用的 VS 的 Resharper 插件会推荐加。
实际上在压缩的时候,还是有一些别的情况会出问题的
a = b;(function(){ return 100 })();
a = b(function(){ return 100 })();
的区别就…

当然要加
后端加的前端也加

补充一下,举这几个例子的一个前提是,代码不应依赖于开发环境和工具。因为不是所有人都是用的统一的开发环境和工具(而且即使同一个工具,不同版本之间也可能有差异)。

想起来就用,忘了就没了

不加分号。tab = 4 个空格。驼峰命名。
来吧开战吧。




分号主要用于

const a = 10

;(_ => {})()

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

!(_ => {})()

加,必须加,这是好习惯

强烈反对。JS 就是 JS,凭什么和 Swift 走?

楼主了解一下 standard 或是 google style
选一个一直用下去就可以了,但是一定要团队统一
格式上没有必要花太多时间,
毕竟编辑器做的比人更精确更好

没事找事,爱咋写咋写,没有优劣
说不加分号会出事的,怕是不知道现代化的生产力工具完全可以避免这些问题

就说一点,前置分号那几个特例非常丑

跟着 eslint 走

个人习惯加分号,因为我写的是 Java Script

没什么关系

开个 lint, 分分钟治好你的病,也可能是他的病,哈哈 。
要求 2 个空格缩进,少了这个,少了那个。一下子就把你治服贴了。

不加分号怕出事儿,于是加上,不带伞怕下雨,于是一年 365 天,天天带伞出门,额…

想加就加,不加就不加,但是规范要做好,编辑器可以帮你自动加减的。

公司代码要求加,个人项目基本上 Standard。实际写代码看心情打,反正有 ESLint

因没有分号整体代码上看起来比较美观,如果纯粹以感性角度来看的话。

我觉得苹果应该也是这么想的。

不加,prettier。就算手动加也是前置,或者使用 void

{}里的全不加。
变量、常量全部加。

先学的 c/c++,然后有时 Java,自学 js 的时候发现可以随意,然后自己就默认加上

java 程序员写 js 大部分加,有时不加,同一个文件里统一

加不加都可以,重要的是要符合团队的规范,团队里都加,就应该加。

当然是加分号

用分号习惯好,反正有 eslint 帮你做

不加分号,浑身难受

你用的人肉 JS 压缩工具??

我认为“没有歧义”以及“简单易懂”才是真正的美观。Python 语法禁止直接换行,因此不加分号。JS 允许换行,所以要分号保证没有歧义、以及一眼望过去就能知道代码在干什么。

jscs
我记得哪次提议又说要加分号嘞
能不加就不加 但是有时候不得不写分号。慢慢的看惯了行首分号还有点萌

加的,用惯了 Java,习惯加分号,即使偶尔忘记加了,下次看到了还会补上

看不出来那些只是简单示例一下吗?或者你从没遇到过压缩出错的代码?这也要喷,姿势不对啊!

麻烦举个压缩出错的代段片段,举出来我服

我觉得没必要跟着你的思路做什么证明,你的言论只能证明,你真没见过!
没见过世面还这么嚣张的人,通常不需要回复
拉黑再见!

以前我是绝对的加分号党,4 空格党。。

现在,不加,2 空格,as lazy as posible …

装个 Prettier 自动格式化

坚决不用分号,而且碰到那些需要分号的语言通常都是直接抵制……
https://standardjs.com/readme-zhcn.html
这里面有说,除了以 ( 或 [ 或 开头的行,前面要加分号。其他任何地方都不用加分号。<br><br>比如:<br>;(async () =&gt; {<br><br>})()<br><br>或<br>;['abc', null].toString()<br><br>或<br>;${sss}abc def`.trim()

在 Node.js 开发中,关于是否在 JavaScript 代码中使用分号,这是一个有争议的话题,但有一定的行业惯例和最佳实践可供参考。

1. 使用分号

使用分号是传统的做法,尤其在大型项目中,它可以避免某些潜在的自动分号插入(ASI, Automatic Semicolon Insertion)导致的错误。例如:

const a = 5
const b = 10
const sum = a + b * 2; // 明确使用分号,避免歧义

2. 不使用分号

一些开发者选择省略分号,基于以下理由:

  • 遵循 JavaScript 的“简约”风格。
  • 现代 JavaScript 引擎对 ASI 的处理已经相当成熟。

代码示例:

const a = 5
const b = 10
const sum = a + b * 2 // 省略分号,依赖 ASI

3. 风格指南

无论选择哪种方式,最重要的是保持一致,并遵循团队的代码风格指南。例如,Airbnb 的 JavaScript 风格指南推荐使用分号,而 Prettier 和 ESLint 等工具可以帮助自动格式化代码,包括添加或删除分号。

结论

在 Node.js 中,是否使用分号更多取决于个人或团队的偏好。如果团队有明确的风格指南,遵循指南即可。如果没有,可以考虑以下几点:

  • 大型项目或团队中,使用分号可以减少潜在的错误。
  • 个人项目或小型团队中,可以根据个人喜好选择。

最终,代码的可读性和一致性比单一的分号使用习惯更重要。

回到顶部