English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
JavaScript é um dos linguagens de programação mais populares na indústria atual. Se você quiser aprender essa linguagem, evite os seguintes erros.
Se não prestarmos atenção ao usar o operador de atribuição (=) em vez do operador de comparação (==) na instrução if, o programa JavaScript pode gerar resultados inesperados.
Se num não for igual a20, esta instrução if retorna false:
var num = 0; if (num == 20)Teste e Veja‹/›
Esta instrução if retorna true, porque20 é true:
var num = 0; if (num = 20)Teste e Veja‹/›
A atribuição sempre retorna o valor atribuído.
Quando as pessoas começam a usar JavaScript, isso pode ser o erro mais comum.
Em comparações comuns, o tipo de dados não importa. Se a instrução if retornar true:
var a = 20; var b = "20"; if (a == b)Teste e Veja‹/›
Em comparações estritas, o tipo de dados é realmente importante. Esta instrução if retorna false:
var a = 20; var b = "20"; if (a === b)Teste e Veja‹/›
A diferença entre (a == b) e (a === b) é:
== Se a igual a b, retorna true
=== Se a igual a b e eles pertencem ado mesmo tipoSe sim, retorna true
Normalmente, você deve sempre usar ===, também conhecido como operador de igualdade estrita ou operador de identidade.
Como mencionado nos capítulos anteriores,+operadores são usados para adição e concatenação.
Além dissoé sobre adicionarnúmeros.
concatenaçãoé sobre adicionarA string.
Portanto, adicionar números como números e adicionar números como strings resulta em resultados diferentes:
var a = 10; var b = 5; var c = a + b; // c = 15 var a = 10; var b = "5"; var c = a + b; // c = "105"Teste e Veja‹/›
Todos os números no JavaScript são armazenados como64números de ponto flutuante (Floats).
Todos os linguagens de programação (inclusive JavaScript) têm dificuldades com valores de ponto flutuante precisos:
var a = 0.1; var b = 0.2; var c = a + b; // o resultado de c não será 0.3Teste e Veja‹/›
Para resolver o problema mencionado acima, ajuda a multiplicar e dividir:
var c = (a * 10 + b * 10) / 10; // c = 0.3Teste e Veja‹/›
O JavaScript permite que você queira dividir uma sentença em duas linhas:
var str = "w3caixa de código Tutorial";Teste e Veja‹/›
Mas, interromper uma sentença no meio da string não terá efeito:
var str = "w3caixa de código Tutorial";Teste e Veja‹/›
Se for necessário interromper uma sentença dentro de uma string, deve-se usar o "barra invertida" (caractere de escape):
var str = "w3caixa de código \ Tutorial";Teste e Veja‹/›
Outra solução é usarliterais de template(códigos de aspas invertidas ``)strings. Isso elimina a necessidade de escapar strings longas:
var str = `Poluição do ar é a introdução de compostos no atmosfera. Isso danifica o equilíbrio ambiental e causa varias doenças.`;Teste e Veja‹/›
Devido ao erro de posição do ponto e vírgula, o seguinte código será executado independentemente do valor de num:
if (num === 45); { // bloco de código }Teste e Veja‹/›
A vírgula no final da definição de objeto e array no ECMAScript 5é permitido.
let fruits = ["Apple", "Mango", "Banana", "Orange",];//array let user = {firstName:"Vishal", lastName:"Choudhary", age:22,};//objeto
No entanto, a adição de vírgula no final do array, no Internet Explorer 8vai falhar.
O JSON não permite vírgulas consecutivas.
O JavaScript não cria um novo escopo para cada bloco de código.
é aplicável em muitos linguagens de programação, mas não no JavaScript.
for (var i = 0; i < 10; i++) { // algum código } document.write(i); // Qual será essa saída?Teste e Veja‹/›
usarletA palavra-chave cria um novo escopo para cada bloco de código:
for (let i = 0; i < 10; i++) { // algum código } document.write(i); // Qual será essa saída?Teste e Veja‹/›
undefinedO valor indica que ainda não foi atribuído um valor à variável ou que a variável não foi declarada.
nullO valor indica que deliberadamente não há nenhum valor de objeto.
Isso torna um pouco difícil testar se o objeto está vazio.
pode-se testar se o tipo éundefinedpara testar se o objeto existe:
if (typeof myObj === "undefined")Teste e Veja‹/›
mas você não pode testar se o objeto énullporque se o objetoundefinedo que lançará um erro:
if (myObj === null)Teste e Veja‹/›
Para resolver este problema, é necessário testar se um objeto não éundefinede não énull:
if (typeof myObj !== "undefined" && myObj !== null)Teste e Veja‹/›