在我的JavaScript中,我倾向于成为分号的多产用户:
var x = 1;
var y = 2;
if (x==y){do something};
我最近注意到我正在查看许多JavaScript,这些JavaScript在if语句后面没有分号。然后我发现我甚至不知道JS中分号的首选语法,并且在一些谷歌搜索后(相当令人惊讶地)除了分裂一行语句之外根本不需要分号。 / p>
所以,问题是......人们使用分号的这种习惯来自哪里?它是JavaScript中发挥作用时使用的一些流行语言的残余吗?一般的好习惯?只是我吗?
我可能会坚持使用它,因为在编写jQuery链以轻松发现结尾时,它很不错。
更新:
感谢大家的所有答案!总而言之,看起来我们在JS中看到很多分号的原因,即使不需要,也来自各种变量:
答案 0 :(得分:13)
许多计算机语言使用分号来表示语句的结尾。 C,C ++和Java就是这方面的热门例子。
至于为什么人们使用它们尽管它们是可选的,它们会提高代码的可读性。在大多数情况下,它只是习惯性地完成,但有时您的代码中需要使用分号来消除可能的歧义。它总是比抱歉更安全(和一致)。
以下是Do you recommend using semicolons after every statement in JavaScript?
的示例// define a function
var fn = function () {
//...
} // semicolon missing at this line
// then execute some code inside a closure
(function () {
//...
})();
这将被解释为:
var fn = function () {
//...
}(function () {
//...
})();
此外,分号允许Javascript正确打包/缩小。否则所有的陈述都将汇集成一个大混乱。
答案 1 :(得分:4)
JavaScript需要分号。但它确实有自动半结肠插入。
大多数JavaScript程序员比ASI更聪明,更喜欢用半冒号来表达。
答案 2 :(得分:4)
习惯来自恐惧。害怕“破碎”的js压缩器(我对Plone压缩器有一些问题,例如传统的js没有var
语句),担心可能会破坏浏览器实现,列表还在继续。那么,为什么不在任何地方使用;
并避免所有这些陷阱呢?
这种方法的问题(只是总是使用分号而没有进一步的解释)是你没有试图理解你为什么一开始就这样做,你只是因为有人说你这样做,而且,恕我直言,这也可能是有害的。你过去使用的破碎压缩机现在已经固定好了,你不断插入分号......破碎的习惯很难。我们只是继续做事,因为“我们总是这样做。”
建议许多新的JavaScript程序员只使用分号 无处不在,并期望如果他们不故意使用 分号插入规则,他们可以安全地忽略存在 这整个语言功能。事实并非如此,因为 上述限制性制作,特别是退货声明。 当意识到限制生产问题时,程序员 然后可能会过度警惕线路,并且即使在什么时候也要避开它们 他们会提高清晰度。最好熟悉所有的 ASI的规则,以便能够读取任何代码,无论它如何 编写,并编写尽可能清晰的代码。
这是关于此主题的great resource以及引用的来源。很棒的阅读。
哪种风格更好? 在某种程度上有客观的 “更好”的选择,在我看来, 最小分号/逗号优先风格略胜一筹,因为 它基本上更易于扫描,因为它鼓励 程序员更好地理解他们使用的语言。
...和来自更多optionated article的第二个引用,反对始终使用分号。一个很好的阅读。
答案 3 :(得分:3)
是否使用分号在很大程度上是一个选择问题。但是,在javascript中,与许多其他语言不同,不使用它们会导致意外结果。例如,
return
{'foo':'bar'};
会因为javascript的自动分号插入而无法返回任何内容。
答案 4 :(得分:1)
对于这种编码方式的起源,这可能仍然是一个值得商榷的问题,但它可能来自区分中的1和多个语句的能力> conditional,这在大多数语言中都很常见。而且,人们可能会将语法与JavaScript的对象文字
混淆首先,如果出现以下情况,您将拥有单一陈述:
if (someNumber == 2)
doSomething();
else
doSomethingElse();
然后,你有多语句if(不需要分号):
if (someNumber == 3) {
doThisFirst();
doThisSecond();
} else
doSomethingElse();
这种语法也可能与JavaScript的 object literal 混淆,后者确实需要半色:
var SomeObjectLiteral = {
property: 2,
doSomething: function() {
}
};
基本上,分号在Javascript中很重要,可以确定命令或定义的结束位置。并且大括号对于确定这些命令的块同样重要。但是,你可以拥有任意数量的分号。如果有疑问,请使用分号,但如果有人因为不需要,请做好准备:)
答案 5 :(得分:0)
C语言在语句结尾处使用分号,并且还使用大括号。
答案 6 :(得分:0)
PHP在行尾使用分号,这就是我通常在javascript中使用它们的原因。
答案 7 :(得分:0)
分号标记JS中语句的结尾,但是我不在分支后面加分号,只是在括号内的语句和返回语句的ALWAYS之后。
在你的例子中,我觉得没必要。
答案 8 :(得分:0)
你可以在分号的帮助下在函数内写多个语句;分号用于分隔语句。容易理解。
答案 9 :(得分:0)
除了代码可读性之外,当您真正尝试缩小代码时,会使用分号。缩小后,如果代码中没有分号,javascript引擎可能无法知道哪个语句结束,因为代码中不再有任何新行。