Strings maiores que 80 caracteres devem ser escritas em múltiplas linhas e usar concatenação.
Nota: Se muito usado, strings longas com concatenação podem impactar na performance. jsPerf & Discussion
// ruimvarerrorMessage='This is a super long error that was thrown because of Batman. When you stop to think about how Batman had anything to do with this, you would get nowhere fast.';// ruimvarerrorMessage='This is a super long error that was thrown because \of Batman. When you stop to think about how Batman had anything to do \with this, you would get nowhere \fast.';// bomvarerrorMessage='This is a super long error that was thrown because '+'of Batman. When you stop to think about how Batman had anything to do '+'with this, you would get nowhere fast.';
Quando for construir uma string programaticamente, use Array#join ao invés de concatenação de strings. Principalmente para o IE: jsPerf.
varitems;varmessages;varlength;vari;messages=[{state: 'success',message: 'This one worked.'},{state: 'success',message: 'This one worked as well.'},{state: 'error',message: 'This one did not work.'}];length=messages.length;// ruimfunctioninbox(messages){items='<ul>';for(i=0;i<length;i++){items+='<li>'+messages[i].message+'</li>';}returnitems+'</ul>';}// bomfunctioninbox(messages){items=[];for(i=0;i<length;i++){items[i]='<li>'+messages[i].message+'</li>';}return'<ul>'+items.join('')+'</ul>';}
// definindo uma função anônimavaranonymous=function(){returntrue;};// definindo uma função nomeadavarnamed=functionnamed(){returntrue;};// função imediatamente invocada (IIFE)(function(){console.log('Welcome to the Internet. Please follow me.');})();
Nunca declare uma função em um escopo que não seja de uma função (if, while, etc). Ao invés, atribua a função para uma variavel. Os Browsers irão deixar você fazer isso, mas a interpretação disso não é legal. Fazendo isso você pode ter más notícias a qualquer momento.
Nota: A ECMA-262 define um bloco como uma lista de instruções. A declaração de uma função não é uma instrução. Leia em ECMA-262's.
Sempre use var para declarar variáveis. Não fazer isso irá resultar em variáveis globais. Devemos evitar poluir o namespace global. O Capitão Planeta já nos alertou disso.
Declare as variáveis que você não vai estipular valor por último. É útil no futuro, quando você precisar atribuir valor para ela dependendo do valor da variável já declarada.
Declarações de váriaveis durante todo o escopo da função são elevadas ao topo função com valor atribuído undefined. Esse comportamento é chamado de hoisting.
// sabemos que isso não irá funcionar (assumindo que// não exista uma variável global chamada `notDefined`)functionexample(){console.log(notDefined);// => lança uma ReferenceError}// Declarar uma variável depois de ter referenciado// a mesma irá funcionar pelo comportamento do `hoist`// Nota: a atribuição do valor `true` não é afetada por `hoisting`.functionexample(){console.log(declaredButNotAssigned);// => undefinedvardeclaredButNotAssigned=true;}// O interpretador fez `hoisting` para a declaração// da variável. Isso significa que nosso exemplo pode// ser reescrito como:functionexample(){vardeclaredButNotAssigned;console.log(declaredButNotAssigned);// => undefineddeclaredButNotAssigned=true;}
Funções anônimas fazem hoist para o nome da sua variável, não para a corpo da função.
functionexample(){console.log(anonymous);// => undefinedanonymous();// => TypeError anonymous is not a functionvaranonymous=function(){console.log('anonymous function expression');};}
Funções nomeadas fazem hoist para o nome da variável, não para o nome ou corpo da função.
functionexample(){console.log(named);// => undefinednamed();// => TypeError named is not a functionsuperPower();// => ReferenceError superPower is not definedvarnamed=functionsuperPower(){console.log('Flying');};// O mesmo acontece quando o nome da função// é o mesmo da variável.functionexample(){console.log(named);// => undefinednamed();// => TypeError named is not a functionvarnamed=functionnamed(){console.log('named');};}}
Declarações de funções nomeadas fazem hoist do nome da função e do seu corpo.
请发表评论