Подтвердить что ты не робот

Ввод; в конце определения функции

Почему считается лучшей практикой поместить a; в конце определения функции.

например.

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

лучше, чем:

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

Ответ 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, чтобы сделать это для вас неявно.

Не добавлять точку с запятой может привести к неожиданному поведению в зависимости от следующего кода.