Почему считается лучшей практикой поместить a; в конце определения функции.
например.
var tony = function () {
console.log("hello there");
};
лучше, чем:
var tony = function () {
console.log("hello there");
}
Ответ 1
TL; DR: Без точки с запятой выражение вашей функции может превращаться в немедленное вызывается функциональное выражение в зависимости от кода, который следует за ним.
Автоматическая точка с запятой - боль. Вы не должны полагаться на это:
var tony = function () {
console.log("hello there"); // Hint: this doesn't get executed;
};
(function() {
/* do nothing */
}());
Versus:
var tony = function () {
console.log("hello there"); // Hint: this gets executed
}
(function() {
/* do nothing */
}());
Во втором (плохом) примере точка с запятой не вставлена, потому что следующий код может иметь смысл. Таким образом, анонимная функция, которую вы ожидали назначить на tony, мгновенно вызывается каким-либо другим аргументом, а tony получает значение возврата, которое вы ожидали tony, что на самом деле не так, как вы хотели.
Ответ 2
Вы разместили выражение функции. В отличие от блоков, операторы заканчиваются точкой с запятой, поэтому вы должны вставить точку с запятой вместо того, чтобы полагаться на ASI, чтобы сделать это для вас неявно.
Не добавлять точку с запятой может привести к неожиданному поведению в зависимости от следующего кода.