Respostas:
Ponto e vírgula após as declarações de função não são necessárias .
A gramática de a FunctionDeclaration
é descrita na especificação como esta:
function Identifier ( FormalParameterListopt ) { FunctionBody }
Não é necessário ponto e vírgula gramaticalmente, mas você pode se perguntar por quê?
O ponto e vírgula serve para separar as afirmações umas das outras, e a FunctionDeclaration
não é uma afirmação .
FunctionDeclarations
são avaliados antes que o código entre em execução, içar é uma palavra comum usada para explicar esse comportamento.
Os termos "declaração de função" e "declaração de função" geralmente são usados indevidamente de forma intercambiável, porque não há nenhuma declaração de função descrita na Especificação do ECMAScript, no entanto, existem algumas implementações que incluem uma declaração de função em sua gramática, principalmente a Mozilla, mas novamente não é padrão.
No entanto, ponto-e-vírgula é sempre recomendado onde você usa FunctionExpressions
, por exemplo:
var myFn = function () {
//...
};
(function () {
//...
})();
Se você omitir o ponto e vírgula após a primeira função no exemplo acima, obterá resultados completamente indesejados:
var myFn = function () {
alert("Surprise!");
} // <-- No semicolon!
(function () {
//...
})();
A primeira função será executada imediatamente, porque os parênteses que cercam a segunda serão interpretados como os Arguments
de uma chamada de função.
Palestras recomendadas:
FunctionDeclaration
vs FunctionExpression
)Eu os uso após declarações de função como variável:
var f = function() { ... };
mas não após as definições de estilo clássico:
function f() {
...
}
JS Lint é uma convenção de fato e não diz ponto-e-vírgula após o corpo da função. Consulte a seção "ponto e vírgula" .
Apenas fique consistente! Eles não são necessários, mas eu os uso pessoalmente porque a maioria das técnicas de minificação depende do ponto-e-vírgula (por exemplo, Packer ).
Realmente só depende da sua preferência. Eu gosto de terminar as linhas de código com ponto-e-vírgula porque estou acostumado a Java, C ++, C #, etc, então uso os mesmos padrões para codificação em javascript.
Normalmente, não encerro declarações de função em ponto e vírgula, mas essa é apenas a minha preferência.
Os navegadores executarão de qualquer maneira, mas talvez algum dia eles apresentem alguns padrões mais rígidos que governam isso.
Exemplo de código que eu escreveria:
function handleClickEvent(e)
{
// comment
var something = true; // line of code
if (something) // code block
{
doSomething(); // function call
}
}
Na verdade, é mais do que uma questão de convenção ou consistência.
Estou bastante certo de que não colocar ponto-e-vírgula após cada instrução diminui a velocidade do analisador interno, porque ele precisa descobrir onde está o final da instrução. Eu gostaria de ter alguns números úteis para você confirmar isso positivamente, mas talvez você possa pesquisar no Google. :)
Além disso, quando você está compactando ou minimizando o código, a falta de ponto-e-vírgula pode levar a uma versão reduzida do seu script que não faz o que você queria, porque todo o espaço em branco desaparece.
Quando minimizei meus scripts, percebi que precisava usar ponto e vírgula para funções que começam com a marca igual. se você definir uma função como var, precisará usar ponto e vírgula.
precisa de ponto e vírgula
var x = function(){};
var x = new function(){};
this.x = function(){};
sem necessidade de ponto e vírgula
function x(){}
SIMPLES:
É uma boa prática deixar o ponto-e-vírgula ;
após o final dos colchetes funcionais. Eles são considerados uma prática recomendada há anos.
Uma vantagem de sempre usá-los é se você deseja reduzir o seu JavaScript.
Como reduzir o Javascript, ajuda a reduzir um pouco o tamanho do arquivo.
Mas, quanto à melhor prática e resposta acima, não é recomendável usá-lo após um tag de função.
Se você não usar ponto-e-vírgula, e se quiser reduzir (como muitos desenvolvedores gostam de fazer se o site deles usa muito JavaScript), poderá obter todos os tipos de erros / avisos.
o ponto e vírgula depois que uma função não é necessária ou não, não causa erros no seu programa. no entanto, se você planeja minificar seu código, é recomendável usar ponto-e-vírgula após as funções. digamos, por exemplo, que você tenha um código como o abaixo
//file one
var one=1;
var two=2;
function tryOne(){}
function trytwo(){}
e
//file two
var one=1;
var two=2;
function tryOne(){};
function trytwo(){};
quando você minifica os dois, você obtém o seguinte como saída
//file one
var one=1;var two=2;function tryOne(){}
function trytwo(){}
e
//file two
var one=1;var two=2;function tryOne(){};function trytwo(){};