O uso inadequado de JavaScript

Neste capítulo, vamos discutir o uso de erros de JavaScript.


erro do operador a atribuição de aplicações

No programa JavaScript se você usar uma declaração condicional se o operador de atribuição é o sinal de igual (=) irá gerar um resultado de erro, a abordagem correta é usar uma comparação de dois sinais de igualdade (==).

if condicional retorna falso (esperamos), porque x não é igual a 10:

var x = 0;
Se (x == 10)

tente »

if condicional retorna verdadeiro (não que se esperava) instrução é executada, porque as condições para a atribuição x 10,10 é verdade:

var x = 0;
Se (x = 10)

tente »

if condicional retorna false (não o que esperávamos) instrução é executada, porque as condições para a atribuição x 0,0 é falsa:

var x = 0;
Se (x = 0)

tente »
nota Retorna o valor da atribuição de variável.

comparação Erros comuns

Em comparação convencional, o tipo de dados é ignorado, se a seguinte declaração condição retorna true:

var x = 10;
var y = "10";
Se (x == y)

tente »

Na operação de comparação rigorosa, um cálculo identidade === operador, enquanto o valor da expressão de verificação de tipo, as seguintes condições if retornar false:

var x = 10;
var y = "10";
Se (x === y)

tente »

Este erro ocorre frequentemente na instrução switch, alternar declaração calculada usando o operador de identidade (===) foram comparados:

Os exemplos a seguir irá executar pop alerta:

var x = 10;
switch (x) {
caso 10: alert ( "Olá" );
}

tente »

Os exemplos a seguir são inconsistentes porque o tipo não executa popups de alerta:

var x = 10;
switch (x) {
caso "10": alert ( " Olá");
}

tente »

Adicionando e Considerações de conexão

A adição de dois números.

A seqüência de conexão para conectar os dois.

Adição e JavaScript são conectados usando o operador +.

Em seguida, podemos ver dois números juntos e conectado a uma sequência de números e distinção a título de exemplo:

var x = 10 + 5; // x é 15 Resultados
var x = 10 + "5" ; Resultados // X é "105"

tente »

Usando variáveis ​​somando os resultados são inconsistentes:

var x = 10;
var y = 5;
var z = x + y; Resultados // z é 15

var x = 10;
var y = "5";
var z = x + y; Resultados // Z é "105"

tente »

Observe o uso de dados de ponto flutuante

JavaScript Todos os dados são baseados em 64-bit tipo de dados de ponto flutuante (float) para armazenar.

Todas as linguagens de programação, incluindo JavaScript, para precisão de ponto dos dados flutuante são difíceis de determinar:

var x = 0,1;
var y = 0,2;
var z = x + y Resultados // z é de 0,3
se (Z == 0,3) // Retorna false

tente »

I resolver este problema, você pode usar uma multiplicação de inteiros e divisão para resolver:

Exemplos

var z = (x * 10 + y * 10) / 10; // resultado z é de 0,3

tente »

Ramos de cadeia do JavaScript

Usamos quebras de linha para executar instruções JavaScript no string:

exemplo 1

var x =
"World Olá!";

tente »

No entanto, na seqüência de retorno directamente o transporte está sendo dada para:

exemplo 2

var x = "Olá
Mundo! ";

tente »

Podemos escolher a ferramenta de desenvolvimento ou pressione F12 para ver a mensagem de erro:

quebras de linha seqüência precisa usar uma barra invertida (\), da seguinte forma:

exemplo 3

var x = "Olá \
Mundo! ";

tente »

ponto e vírgula errada

O exemplo a seguir, uma vez que o errado ponto e vírgula, se o bloco de declaração de código não será executado:

Se (x == 19);
{
// Bloco de código
}

tente »

Voltar Precauções declaração

JavaScript é o padrão automaticamente termina na última linha de código.

Os dois exemplos a seguir retornam o mesmo resultado (a não um ponto e vírgula):

exemplo 1

myFunction função (a) {
poder var = 10
devolver um poder *
}

tente »

exemplo 2

myFunction função (a) {
var potência = 10;
devolver um poder *;
}

tente »

JavaScript também pode ser utilizada para terminar uma indicação de multi-linha.

Os exemplos a seguir retornam o mesmo resultado:

exemplo 3

myFunction função (a) {
var
potência = 10;
devolver um poder *;
}

tente »

No entanto, os seguintes exemplos de resultados são devolvidosindefinido:

exemplo 4

myFunction função (a) {
var
potência = 10;
retorno
um poder *;
}

tente »

Porque é que existe um tal resultado? Porque em JavaScript, exemplos de 4 código consistente e o seguinte código:

function myFunction(a) {
    var
    power = 10;  
    return;       // 分号结束,返回 undefined
    a * power;
}

resolver

Se se trata de uma informação incompleta, como se segue:

var

JavaScript tentará ler a segunda instrução linha:

power = 10;

No entanto, porque esta declaração é completa:

return

JavaScript irá desligar automaticamente a declaração:

return;

Em JavaScript, o ponto e vírgula é opcional.

Desde o retorno é uma frase completa, ele vai desligar instrução de retorno JavaScript.

notaNota: Não quebrar a linha da instrução de retorno.

Use um nomes de índice de matriz

Muitas linguagens de programação permitem o uso do nome como o índice da matriz.

Para usar o nome como o índice da matriz é chamada uma matriz associativa (ou de hash).

O JavaScript não suporta a utilização do nome para matrizes índice, apenas um índice numérico.

Exemplos

var person = [];
pessoa [0] = "John" ;
pessoa [1] = "Doe" ;
pessoa [2] = 46;
var x = person.length; // Person.length retorna 3
var y = pessoa [0]; // Pessoa [0] retorna "John"

tente »

Em JavaScript, use o nome do objeto como um índice.

Se você usar o nome como um índice ao acessar o array, JavaScript irá redefinir a matriz padrão de objetos.

Depois de realizar esta operação, métodos e propriedades da matriz não será mais usado, caso contrário ele irá gerar um erro:

Exemplos

var person = [];
pessoa [ "Nome"] = " John";
pessoa [ "lastName"] = " Doe";
pessoa [ "idade"] = 46 ;
var x = person.length; // person.length retorna 0
var y = pessoa [0]; // Pessoa [0] retorna indefinido

tente »

Definir um elemento de matriz e, finalmente, não pode adicionar uma vírgula

Erros estão definidos:

points = [40, 100, 1, 5, 25, 10,];

A definição correta do caminho:

points = [40, 100, 1, 5, 25, 10];

Definir o objeto e, finalmente, não pode adicionar uma vírgula

Erros estão definidos:

websites = {site:"本教程", url:"www.w3write.com", like:460,}

A definição correta do caminho:

websites = {site:"本教程", url:"www.w3write.com", like:460}

Indefinida não nulo

Em JavaScript, null para objetos, indefinido para variáveis, propriedades e métodos.

Os objetos são definidos apenas possível, como null, caso contrário indefinido.

Se queremos testar se a presença do objeto, quando o objeto não está definido ainda irá lançar um erro.

O uso errado:

if (myObj !== null && typeof myObj !== "undefined") 

O caminho certo é que precisamos usar typeof para detectar se um objeto foi definido:

if (typeof myObj !== "undefined" && myObj !== null) 

escopo de bloco

O JavaScript não criar um novo escopo em cada bloco de código, o âmbito geral de cada bloco de código são globais.

O seguinte código variável i retorna 10 em vez de indefinida:

Exemplos

for (var i = 0; i <10; i ++) {
// Alguns códigos
}
voltar i;

tente »