Точка с запятой после объявления функции является не обязательно .
Грамматика a FunctionDeclaration
описана в спецификации следующим образом:
function Identifier ( FormalParameterListopt ) { FunctionBody }
Там нет точки с запятой грамматически, но может возникнуть вопрос, почему?
Точки с запятой служат для отделения утверждений друг от друга, и a FunctionDeclaration
не является утверждением .
FunctionDeclarations
оцениваются до того, как код входит в исполнение, подъем - это общее слово, используемое для объяснения этого поведения.
Термины «объявление функции» и «оператор функции» часто ошибочно используются взаимозаменяемо, поскольку в спецификации ECMAScript не описан оператор функции, однако есть некоторые реализации, которые включают оператор функции в свою грамматику, в частности Mozilla, но опять же это это нестандартно.
Однако точки с запятой всегда рекомендуются, когда вы используете FunctionExpressions
, например:
var myFn = function () {
//...
};
(function () {
//...
})();
Если вы опустите точку с запятой после первой функции в приведенном выше примере, вы получите совершенно нежелательные результаты:
var myFn = function () {
alert("Surprise!");
} // <-- No semicolon!
(function () {
//...
})();
Первая функция будет выполнена немедленно, потому что круглые скобки, окружающие вторую, будут интерпретированы как Arguments
вызов функции.
Рекомендуемые лекции:
Я использую их после объявления функции как переменной:
но не после определений в классическом стиле:
источник
JS Lint является соглашением де-факто, и в нем не указывается точка с запятой после тела функции. Смотрите раздел «Точка с запятой» .
источник
Просто оставайся последовательным! Они не нужны, но я лично использую их, потому что большинство методов минификации основаны на точках с запятой (например, Packer ).
источник
На самом деле просто зависит от ваших предпочтений. Мне нравится заканчивать строки кода точкой с запятой, потому что я привык к Java, C ++, C # и т. Д., Поэтому я использую те же стандарты для кодирования в javascript.
Обычно я не заканчиваю объявления функций точкой с запятой, но это мое предпочтение.
Браузеры будут работать в любом случае, но, возможно, когда-нибудь они придумают более строгие стандарты, регулирующие это.
Пример кода я бы написал:
источник
На самом деле это больше, чем просто вопрос соглашения или последовательности.
Я совершенно уверен, что отсутствие точки с запятой после каждого оператора замедляет внутренний синтаксический анализатор, потому что он должен выяснить, где находится конец оператора. Хотелось бы, чтобы у меня было несколько удобных цифр, чтобы вы это подтвердили, но, может быть, вы можете сами это погуглить. :)
Кроме того, когда вы сжимаете или минимизируете код, отсутствие точек с запятой может привести к уменьшенной версии вашего скрипта, которая не будет выполнять то, что вы хотели, потому что все пробелы исчезают.
источник
Когда я минимизировал свои скрипты, я понял, что мне нужно использовать точку с запятой для функций, которые начинаются со знака равенства. если вы определяете функцию как var, да, вам нужно использовать точку с запятой.
нужна точка с запятой
не нужно ставить точку с запятой
источник
ПРОСТО:
Рекомендуется оставлять точки с запятой
;
после фигурных скобок. Они считались лучшей практикой в течение многих лет.Одно из преимуществ их использования - если вы хотите минимизировать свой JavaScript.
Как минимизирование Javascript, помогает немного уменьшить размер файла.
Но что касается передового опыта и ответа выше, не рекомендуется использовать его после тега функции.
Если вы НЕ используете точки с запятой и хотите минимизировать (как это делают многие разработчики, если их сайт обслуживает много JavaScript), вы можете получить всевозможные ошибки / предупреждения.
источник
точка с запятой после функции не является необходимой, используя ее или нет, не вызывает ошибок в вашей программе. однако, если вы планируете минимизировать свой код, то лучше использовать точку с запятой после функций. скажем, например, у вас есть код, подобный приведенному ниже
и
когда вы минимизируете оба, вы получите следующее в качестве вывода
Обратите внимание, что комментарии только для иллюстрации
и
источник