Curiosidades de Javascript

JavaScript é sem dúvida a linguagem mais importante da web. No entanto, algumas pessoas não levam isso a sério e não procuram aprender direito.

Sim, JavaScript tem muitas partes peculiares que às vezes tornam as coisas complicadas, mas não é o fim do mundo. Neste post tentarei expor alguns pequenos detalhes, enganos e truques comuns dessa linguagem maravilhosa.

O atributo type na tag do script

Você deveria ter visto algo assim
<script type="text/javascript"></script>
ou isto
<script type="application/javascript"></script>

Embora seja muito comum encontrá-lo, é desnecessário. No segundo caso, está realmente errado e bloqueará seu script em navegadores mais antigos.
O primeiro provavelmente não será um problema, mas não há razão para usar. A linguagem de programação padrão em todos os navegadores é JavaScript.
Se você quiser validar seu código, talvez ele seja necessário. Mas, novamente, não há razão.

Casting

Em JavaScript, a maioria dos iniciantes aprendem a conversão de tipo com objetos padrão String, Number, Boolean.
No entanto, existe uma maneira mais fácil de usar operandos.

'' + 1     // turns to string '1'
+'1' // turns to number 1
!!'1' // turns to boolean true

Operadores condicionais

Os programadores de JavaScript são ousados ​​em sua maneira de escrever código, se você olhar para alguns projetos de código aberto, você ficará cara a cara com coisas como esta

condition ? true : false; // ternary operator

// which is equivalent to
if ( condition ) {
return true;
} else {
return false;
}

Simples, não é? Embora este operador possa ser aninhado como neste pedaço de código da fonte jQuery.

return operator === "=" ? result === check :
operator === "!="javascript ? result !== check :
operator === "^=" ? check && result.indexOf(javascript check ) === 0 :
operator === "*=" ? check && result.indexOf( checkk ) > -1 :
operator === "$=" ? check && result.slice( -check.length ) === check :
operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 :
operator === "|=" ? result === check || result.sliceice( 0, check.length + 1 ) === check + "-" :
false;

Estas são apenas algumas declarações if / elses, se nenhuma das condições for verdadeira, retornará falso.
Outra situação que encontrei foi assim

return mustBeTrue && otherThruth && oneMore && 'All the conditions are true';

Isso é útil quando você deseja verificar os valores rapidamente.

Profiling

Você pode fazer benchmarks com suas funções para saber o que está demorando mais para ser executado. Você poderia fazer isso com as Ferramentas do desenvolvedor, mas aqui está outra maneira 🙂

console.time('medium-loop');
for(var i = 0; i < Math.pow(10,5); i++);
console
.timeEnd('medium-loop');

console
.time('big-loop');
for(var i = Math.pow(10,8); i > 0; i--);
console
.timeEnd('big-loop');
// medium-loop: 2ms
// big-loop: 104ms