Ответы:
Точка с запятой после объявления функции является не обязательно .
Грамматика 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
вызов функции.
Рекомендуемые лекции:
FunctionDeclaration
vs FunctionExpression
)Я использую их после объявления функции как переменной:
var f = function() { ... };
но не после определений в классическом стиле:
function f() {
...
}
JS Lint является соглашением де-факто, и в нем не указывается точка с запятой после тела функции. Смотрите раздел «Точка с запятой» .
Просто оставайся последовательным! Они не нужны, но я лично использую их, потому что большинство методов минификации основаны на точках с запятой (например, Packer ).
На самом деле просто зависит от ваших предпочтений. Мне нравится заканчивать строки кода точкой с запятой, потому что я привык к Java, C ++, C # и т. Д., Поэтому я использую те же стандарты для кодирования в javascript.
Обычно я не заканчиваю объявления функций точкой с запятой, но это мое предпочтение.
Браузеры будут работать в любом случае, но, возможно, когда-нибудь они придумают более строгие стандарты, регулирующие это.
Пример кода я бы написал:
function handleClickEvent(e)
{
// comment
var something = true; // line of code
if (something) // code block
{
doSomething(); // function call
}
}
На самом деле это больше, чем просто вопрос соглашения или последовательности.
Я совершенно уверен, что отсутствие точки с запятой после каждого оператора замедляет внутренний синтаксический анализатор, потому что он должен выяснить, где находится конец оператора. Хотелось бы, чтобы у меня было несколько удобных цифр, чтобы вы это подтвердили, но, может быть, вы можете сами это погуглить. :)
Кроме того, когда вы сжимаете или минимизируете код, отсутствие точек с запятой может привести к уменьшенной версии вашего скрипта, которая не будет выполнять то, что вы хотели, потому что все пробелы исчезают.
Когда я минимизировал свои скрипты, я понял, что мне нужно использовать точку с запятой для функций, которые начинаются со знака равенства. если вы определяете функцию как var, да, вам нужно использовать точку с запятой.
нужна точка с запятой
var x = function(){};
var x = new function(){};
this.x = function(){};
не нужно ставить точку с запятой
function x(){}
ПРОСТО:
Рекомендуется оставлять точки с запятой ;
после фигурных скобок. Они считались лучшей практикой в течение многих лет.
Одно из преимуществ их использования - если вы хотите минимизировать свой JavaScript.
Как минимизирование Javascript, помогает немного уменьшить размер файла.
Но что касается передового опыта и ответа выше, не рекомендуется использовать его после тега функции.
Если вы НЕ используете точки с запятой и хотите минимизировать (как это делают многие разработчики, если их сайт обслуживает много JavaScript), вы можете получить всевозможные ошибки / предупреждения.
точка с запятой после функции не является необходимой, используя ее или нет, не вызывает ошибок в вашей программе. однако, если вы планируете минимизировать свой код, то лучше использовать точку с запятой после функций. скажем, например, у вас есть код, подобный приведенному ниже
//file one
var one=1;
var two=2;
function tryOne(){}
function trytwo(){}
и
//file two
var one=1;
var two=2;
function tryOne(){};
function trytwo(){};
когда вы минимизируете оба, вы получите следующее в качестве вывода
//file one
var one=1;var two=2;function tryOne(){}
function trytwo(){}
и
//file two
var one=1;var two=2;function tryOne(){};function trytwo(){};