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

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

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

推荐答案

function declarations后面的分号是not necessary.

FunctionDeclaration的语法在the specification中描述如下:

function Identifier ( FormalParameterListopt ) { FunctionBody }

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

分号用来分隔statementsFunctionDeclaration不是statement.

FunctionDeclarations被判断before代码进入执行,hoisting是用来解释这种行为的common word.

术语"function declaration"和"function statement"经常被错误地互换使用,因为ECMAScript规范中没有描述function语句,但是有些实现在语法中包含function语句,特别是Mozilla,但这也是非标准的.

然而,在使用FunctionExpressions的地方总是建议使用分号.例如:

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

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

如果在上述示例中省略第一个函数后的分号,则会得到完全不想要的结果:

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

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

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

推荐讲座:

Javascript相关问答推荐

如何在不指定宽度和高度的情况下显示来自网址的下一张图像

响应式JS DataTable中的Bootstrap 5弹出程序无法正常工作

想要检测字符串中的所有单词

用相器进行向内碰撞检测

禁用从vue.js 2中的循环创建的表的最后td的按钮

在贝塞尔曲线的直线上找不到交叉点:(使用@Pomax的bezier.js)

提交表格后保留Web表格中的收件箱值?

MongoDB中的引用

Angular material 拖放堆叠的牌副,悬停时自动展开&

google docs boldText直到按行执行应用脚本错误

Mongoose post hook在使用await保存时不返回Postman响应

如何控制Reaction路由加载器中的错误状态?

Ember.js 5.4更新会话存储时如何更新组件变量

为什么123[';toString';].long返回1?

如何创建返回不带`new`关键字的实例的类

在使用REACT更改了CSS类之后,无法更改CSS样式

Nextjs 13.4 Next-Auth 4.2登录(&Quot;凭据&,{});不工作

将多个文本框中的输出合并到一个文本框中

如何通过Axios在GraphQL查询中发送数组

重新呈现-react -筛选数据过多