Точки с запятой после объявления функций не обязательны .
Грамматика FunctionDeclaration
описана в спецификации следующим образом:
function Identifier ( FormalParameterListopt ) { FunctionBody }
Там нет грамматической точки с запятой, но может возникнуть вопрос, почему?
Точки с запятой служат для отделения операторов друг от друга, и FunctionDeclaration
не является оператором .
FunctionDeclarations
оцениваются до код вступает в силу, подъем является общим словом , используемым для объяснения этого поведения.
Термины «объявление функции» и «оператор функции» часто ошибочно используются взаимозаменяемо, поскольку в спецификации ECMAScript не описан оператор функции, однако есть некоторые реализации, которые включают оператор функции в свою грамматику, а именно Mozilla но опять же это нестандартно.
Однако точки с запятой всегда рекомендуются, если вы используете FunctionExpressions
, например:
var myFn = function () {
//...
};
(function () {
//...
})();
Если вы опустите точку с запятой после первой функции в приведенном выше примере, вы получите совершенно нежелательные результаты:
var myFn = function () {
alert("Surprise!");
} // <-- No semicolon!
(function () {
//...
})();
Первая функция будет выполнена немедленно, потому что скобки, окружающие вторую, будут интерпретироваться как Arguments
вызова функции.
Рекомендуемые лекции: