投入;在函数定义的末尾

时间:2013-11-18 12:42:25

标签: javascript jslint

为什么它被认为是最好的做法;在函数定义的末尾。 e。

var tony = function () {
   console.log("hello there");
};

优于:

var tony = function () {
   console.log("hello there");
}

2 个答案:

答案 0 :(得分:35)

TL; DR:如果没有分号,您的函数表达式可以根据其后面的代码变成立即调用的函数表达式。


自动分号插入是一种痛苦。你不应该依赖它:

var tony = function () {
   console.log("hello there"); // Hint: this doesn't get executed;
};
(function() {
  /* do nothing */
}());

对战:

var tony = function () {
   console.log("hello there"); // Hint: this gets executed
}
(function() {
  /* do nothing */
}());

在第二个(坏)示例中,分号未插入,因为后面的代码可能有意义。因此,您希望分配给tony的匿名函数会立即调用其他一些东西作为参数,而tony会被分配给您期望的tony的返回值,这实际上不是您的意思想要的。

答案 1 :(得分:8)

您发布了一个函数表达式。与块不同,语句以分号结束,因此您应该在那里插入分号,而不是依赖ASI来隐式地为您执行此操作。

不添加分号会导致意外行为,具体取决于后面的代码。