Почему я должен использовать точку с запятой после каждой функции в JavaScript?

Я видел, как разные разработчики включают точки с запятой после функций в javascript, а некоторые нет. Что является лучшей практикой?

function weLikeSemiColons(arg) {
   // bunch of code
};

или

function unnecessary(arg) {
  // bunch of code
}

8 ответов


точка с запятой после объявления функций are не надо.

грамматика a FunctionDeclaration - это описано в спецификация а это:

function Identifier ( FormalParameterListopt ) { FunctionBody }

грамматически не требуется точка с запятой, но может возникнуть вопрос, почему?

точки с запятой служат для разделения заявления друг от друга, и FunctionDeclaration - это не сообщении.

FunctionDeclarations оцениваются до код входит в исполнение,поднимать это слово используется для объяснения такого поведения.

термины "объявление функции "и" оператор функции " часто неправильно используются взаимозаменяемо, потому что нет оператора функции, описанного в спецификации ECMAScript, однако есть некоторые реализации, которые включают оператор функции в свою грамматику, в частности Mozilla, но опять же это нестандартный.

однако точки с запятой всегда рекомендуются там, где вы используете FunctionExpressions, например:

var myFn = function () {
  //...
};

(function () {
  //...
})();

если вы опустите точку с запятой после первой функции в приведенном выше примере, вы получите совершенно нежелательные результаты:

var myFn = function () {
  alert("Surprise!");
} // <-- No semicolon!

(function () {
  //...
})();

первая функция будет выполнена немедленно, потому что круглые скобки, окружающие вторую, будут интерпретироваться как Arguments вызова функции.

рекомендовано лекции:


Я использую их после объявления функции как переменной:

var f = function() { ... };

но не после классических определений:

function f() {
    ...
}

JS Lint де-факто конвенции, и он говорит, что нет точки с запятой после тела функции. Вижу "точка с запятой".


просто оставаться последовательным! Они не нужны, но я лично использую их, потому что большинство методов минификации полагаются на двоеточие (например,упаковщик).


действительно просто зависит от ваших предпочтений. Мне нравится заканчивать строки кода полуколонами, потому что я привык к Java, C++, C# и т. д., Поэтому я использую те же стандарты для кодирования в javascript.

Я обычно не заканчиваю объявления функций в полу двоеточиях, но это только мое предпочтение.

браузеры будут работать в любом случае, но, возможно, когда-нибудь они придумают более строгие стандарты, регулирующие это.

пример кода, я бы пиши:

function handleClickEvent(e)
{
     // comment
     var something = true;  // line of code
     if (something)  // code block
     {
        doSomething();  // function call
     }
}

на самом деле это больше, чем вопрос конвенции или согласованности.

Я совершенно уверен, что не размещение точек с запятой после каждого оператора замедляет внутренний парсер, потому что он должен выяснить, где конец оператора. Я бы хотел, чтобы у меня были какие-то удобные номера для вас, чтобы положительно подтвердить это, но, возможно, вы можете сами google. :)

также, Когда вы сжимаете или уменьшаете код, отсутствие полу-двоеточий может привести к уменьшенной версии вашего сценария, который не делает то, что вы хотели, потому что все пустое пространство уходит.


когда я уменьшил свои скрипты, я понял, что мне нужно использовать точку с запятой для функций, которые начинаются с знака равенства. если вы определяете функцию как var, да, вам нужно использовать точку с запятой.

нужна точка с запятой

var x = function(){};
var x = new function(){};
this.x = function(){};

не нужна точка с запятой

function x(){}

просто:

рекомендуется оставлять точки с запятой ; после окончания фигурных скобок функции. Они были для лет.

одним из главных преимуществ их использования является то, что вы хотите минимизировать свой JavaScript.

как минимизация Javascript, помогает уменьшить размер файла совсем немного.

Если вы не используете точку с запятой, и если вы хотите минимизировать (как многие разработчики любят делать, если их сайт обслуживает много JavaScript) вы можете получить всевозможные ошибки / предупреждения.