为什么我应该在 javascript 中的每个函数后使用分号?

新手上路,请多包涵

我见过不同的开发人员在 javascript 中的函数后面包含分号,有些则没有。哪个是最佳实践?

 function weLikeSemiColons(arg) {
   // bunch of code
};

或者

function unnecessary(arg) {
  // bunch of code
}

原文由 macca1 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 193
2 个回答

函数声明 后的分号 不是必需 的。

a FunctionDeclaration 的语法在 规范 中描述如下:

 function Identifier ( FormalParameterListopt ) { FunctionBody }

语法上不需要分号,但可能想知道为什么?

分号用于将 语句 彼此分开,而 FunctionDeclaration 不是 _语句_。

FunctionDeclarations 在代码进入执行 之前 进行评估, 提升 是用来解释这种行为的 _常用词_。

术语“函数声明”和“函数语句”经常被错误地互换使用,因为在 ECMAScript 规范中没有描述函数语句,但是有一些实现在它们的语法中包含函数语句,-特别是 Mozilla- 但同样这是非标准的。

但是,始终建议在您使用 FunctionExpressions 的地方使用分号。例如:

 var myFn = function () {
  //...
};

(function () {
  //...
})();

如果在上例中省略第一个函数后的分号,您将得到完全不需要的结果:

 var myFn = function () {
  alert("Surprise!");
} // <-- No semicolon!

(function () {
  //...
})();

第一个函数将立即执行,因为第二个函数周围的括号将被解释为函数调用的 Arguments

推荐讲座:

原文由 Christian C. Salvadó 发布,翻译遵循 CC BY-SA 4.0 许可协议

我在函数作为变量声明之后使用它们:

 var f = function() { ... };

但不是在古典风格的定义之后:

 function f() {
    ...
}

原文由 Gabe Moothart 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题