Home

我为什么用两个空格缩进和不写分号

分类: 编程

有句话是这么说的,Java 代码10个人有9个人写的一样,但是 JavaScript 代码10个人可能10个人写的都不一样,这当然和语言本身有关,也和社区发展有关,具体我这里暂时不分析了,我只说下我为什么写 JavaScript 习惯两个空格缩进和不写分号。

我这个编码习惯已经快有一年了,不过我刚开始写 JS 的时候也是按照那些书上说的四个空格缩进写分号,不过后来我改变了那个习惯,开始习惯了两个空格缩进和不写分号,具体为啥呢?

首先当然得是这样写没报错问题,因为JavaScript 的ASI(自动分号插入机制),所谓ASI具体就是指

如果 JavaScript 解析器发现代码行可能因为缺失分号而导致错误,那么它就会自动补上分 号。并且,只有在代码行末尾与换行符之间除了空格和注释之外没有别的内容时,它才会 这样做。

常见的会涉及到 ASI 的代码就是 「break、continue、return 和 yield」等, 很多时候JavaScript 里的代码不写分号是完全没问题的,但是也有那么几个情况是需要写分号的,目前来说在 「括号,方括号,正则开头的斜杠,加号,减号」为行首的情况的下是需要加前置分号的,但是我们比较常用的也就 「括号和方括号」作为行首,其中又以括号最为常见,所以只要记住这几种情况就可以了,我感觉没任何压力

其次我觉得不写分号代码更简洁优雅,尤其是ES6出来之后,可能我习惯看python 代码有关,记得之前有个同事每个代码后面都加分号,总之就是不加思考的加,比如我觉得像下面这种代码可加: var a = foo; 但是下面这种语句代码块是完全不用加分号的啊,因为即使不加 ASI 也不会对他们加的,

while(a) {
//
}

所以我不知道他们是觉得这个地方该加还是觉得所有的代码后面都得加呢?全加的意义有在哪呢?但是不全加该什么时候加什么时候不加呢?而且打包压缩编译后的 js 都是一样的,所以为什么不选择都不加呢

还有很多人关心的一点,写不写分号对性能有没有影响?因为很多人觉得依赖 ASI 可能会影响性能,其实加不加分号对性能是基本没影响的,具体可以看知乎的这个问题 JavaScript加分号影不影响性能? - 前端开发 - 知乎

其次关于两个空格缩进的,当时主要原因是 Github 上面很多流行的框架和库以及一些流行的代码规范都是推荐两个空格,而且当时用的显示屏是竖着放的代码逻辑一多缩进一多,代码就没法看了,所以当时就把 tab 键设置成两个空格了,这么一用就一直习惯下来了,而且有的时候觉得两个空格缩进的代码整体比四个缩进好看多了,而且两个空格改成四个空格只要再按一下 tab 就可以了,也觉得很方便。

当然这些都是我的个人喜好,如果有符合这样规范的团队最好,没有的法只能跟着团队规范一起咯,不过现在有 ESlint 这种代码检查工具,我也一直在用,自动修复各种代码规范问题还是很简单的。

因为每次去一个团队,可能都和已有同事的编码习惯不同,便简单写下此文记录我为啥会有这样的编码习惯。