现在我使用prettier,这其实是一个你喜欢看什么的问题(因为prettier意味着我根本就不用打字)。我更喜欢没有分号的代码的样子,所以......:)我只是用 eslint-config-prettier并让prettier来处理它。
JavaScript中的分号是最糟糕的话题之一(仅次于空格与制表符......请用2个空格)。这里 有 三个关于为什么分号是不必要的主题的资源。这里有一些标准,在我批准在一个项目中省略分号之前,这些标准必须到位。
你需要知道的第一件事是叫做自动分号插入(ASI)的东西。它是使我们能够进行这种对话的 "功能"。如果你不熟悉,可以阅读一下。你不应该依赖ASI。这是一个非常糟糕的主意,原因很多。
依赖ASI的问题在你编译或精简你的代码时(取决于你的技术)就会消失。例如,用Babel编译会把分号加回来,而用tererser编译也会。
因此,如果我说你可以在你的源代码中省略分号,你首先需要确保你最终交付给生产的东西(无论是浏览器还是节点)都有分号被添加回来。
ASI有几个问题。然而,如果你正在使用ESLint(你应该这样做),并且你启用了no-unexpected-multiline规则,那么你就安全了。只要确保你的构建管道在该规则被破坏的情况下会失败,因为你的应用程序肯定会失败的
有了这些东西,这就不再是一个关于什么有用什么没用的讨论,而变成了一个简单的偏好问题。
省略分号是一个偏好的问题
那么,为什么我喜欢不使用分号呢?这不仅仅是因为我的右手小指骨折了(虽然有时会受伤),也不仅仅是因为我喜欢每行少打一个字符。这只是因为我不喜欢我的浏览器/编辑器告诉我需要添加一些没有必要的东西。
另外,我喜欢把注意力集中在问题上,而不是担心添加或删除一些最终并不重要的东西。而且,自从我开始省略分号(并且习惯了一开始看起来很难看的样子),我实际上觉得它使我的代码看起来更干净(你必须是未经训练的人,认为你需要分号)。
我听说使用分号的一个理由是,如果没有分号,新人就更难理解代码。我想这是有可能的,但这并不是我对我所教的新人的经验。对我来说,自从我去掉分号后,我并不觉得我的代码在清晰度、可维护性和可读性方面有任何下降。而且现在我甚至都不用考虑这个问题了。
如果你没有正确地编译/uglify和lint你的代码,那么我不建议你在你的代码中省略分号(在这种情况下,这不是一个偏好的问题,这只是写JavaScript的正确方法)。我肯定会建议你把这些东西做好(但这是另一篇博文)。如果你已经把这些东西准备好了,那就太好了!你可以根据自己的喜好做出选择。你可以根据偏好做出选择!在twitters上找你!