Почему я должен использовать точку с запятой после каждой функции в javascript? - PullRequest
270 голосов
/ 02 декабря 2009

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

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

или

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

Ответы [ 8 ]

413 голосов
/ 02 декабря 2009

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

Грамматика FunctionDeclaration описана в спецификации следующим образом:

function Identifier ( FormalParameterListopt ) { FunctionBody }

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

Точки с запятой служат для отделения операторов друг от друга, и FunctionDeclaration не является оператором .

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

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

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

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

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

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

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

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

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

Рекомендуемые лекции:

38 голосов
/ 02 декабря 2009

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

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

но не после определений в классическом стиле:

function f() {
    ...
}
20 голосов
/ 02 декабря 2009

JS Lint является соглашением де-факто, в котором не указывается точка с запятой после тела функции. См. Раздел «Точка с запятой» .

7 голосов
/ 02 декабря 2009

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

5 голосов
/ 02 декабря 2009

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

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

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

Пример кода я бы написал:

function handleClickEvent(e)
{
     // comment
     var something = true;  // line of code
     if (something)  // code block
     {
        doSomething();  // function call
     }
}
3 голосов
/ 03 декабря 2009

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

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

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

1 голос
/ 21 апреля 2017

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

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

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

без точки с запятой

function x(){}
0 голосов
/ 19 февраля 2018

SIMPLE:

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

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

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

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

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

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