一尘不染

为什么要在javascript中的每个函数之后使用分号?

javascript

我已经看到不同的开发人员在javascript函数中包含分号,而有些还没有。哪个是最佳做法?

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

要么

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

阅读 368

收藏
2020-05-01

共1个答案

一尘不染

分号后 函数的声明没有必要的

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

function Identifier ( FormalParameterListopt ) { FunctionBody }

语法上没有分号,但可能想知道为什么?

分号用于将 语句 彼此分开,并且a FunctionDeclaration不是 语句

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

术语“函数声明”和“函数声明”通常会错误地互换使用,因为ECMAScript规范中没有描述函数声明,但是有一些实现在其语法中包括函数声明,特别是Mozilla,但同样是非标准的。

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

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

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

如果在上面的示例中的第一个函数之后省略分号,则将获得完全不希望的结果:

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

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

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

2020-05-01