为什么它被认为是最好的做法;在函数定义的末尾。 e。
var tony = function () {
console.log("hello there");
};
优于:
var tony = function () {
console.log("hello there");
}
答案 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来隐式地为您执行此操作。
不添加分号会导致意外行为,具体取决于后面的代码。