Я знаю, что это не точно скрыто, но не слишком много людей знают о команда PIVOT . Я смог изменить хранимую процедуру, которая использовала курсоры и заняла 2 минуты для столкновения с быстрыми 6 вторыми частями кода, который был одной десятой количество строк!
Точки с запятой после объявлений функций не являются обязательными .
Грамматика FunctionDeclaration
описана в спецификация выглядит так:
function Identifier ( FormalParameterListopt ) { FunctionBody }
Грамматически точки с запятой не требуется, но может возникнуть вопрос, почему?
Точки с запятой служат для отделения друг от друга операторов , а FunctionDeclaration
- не оператор .
Декларации функций
оцениваются до того, как код входит в выполнение, подъем - это общее слово , используемое для объяснения этого поведения.
Термины «объявление функции» и «оператор функции» часто ошибочно используются как синонимы,поскольку в спецификации ECMAScript не описан оператор функции, однако есть некоторые реализации, которые включают оператор функции в свою грамматику, особенно Mozilla-, но, опять же, это нестандартно.
Однако точки с запятой всегда рекомендуются там, где вы используете FunctionExpressions
, например:
var myFn = function () {
//...
};
(function () {
//...
})();
Если вы опустите точку с запятой после первой функции в приведенном выше примере, вы получите совершенно нежелательные результаты:
var myFn = function () {
alert("Surprise!");
} // <-- No semicolon!
(function () {
//...
})();
Первая функция будет выполнена немедленно, потому что скобки, окружающие второй будет интерпретироваться как Аргументы
вызова функции.
Рекомендуемые лекции:
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
}
}
На самом деле это больше, чем вопрос соглашения или согласованности.
Я вполне уверен, что , а не размещение точек с запятой после каждого оператора замедляет внутренний синтаксический анализатор, потому что он имеет чтобы выяснить, где находится конец утверждения. Хотел бы я иметь несколько удобных цифр, чтобы вы положительно это подтвердили, но, возможно, вы можете сами погуглить. :)
Кроме того, когда вы сжимаете или уменьшаете код, отсутствие точек с запятой может привести к уменьшенной версии вашего скрипта, которая не выполняет то, что вы хотели, потому что все пробелы исчезают.