string e número booleano
O tipo JavaScript será convertido para o tipo correspondente de acordo com a atribuição.
var str = ""; alerta (typeof (str)); // stringstr =; alert (typeof (str)); // numbervar sum = str +; //+Programa dois números para adicionar alerta (soma); //
Isso é mais óbvio, e o valor pode ser calculado rapidamente. Mas por favor veja a seguinte conversão
var sum = "" + ""; alerta (tipoof (soma)); // stringalert (soma); // var sum = "" +; alert (typeof (soma)); // stringalert (soma); // var sum = + ""; alerta (typeof (soma)); // stringalert (typeof (soma)); // var div = ""/""; alert (typeof (área)); // númeroLert (typeof (sub)); // var sub = "" - ""; alerta (typeof (sub)); // numberalert (sub); // var div = ""/""; alerta (typeof (área)); // numberalert (typeof (div)); // numberalert (div); //.
Se o tipo de número e tipo de string "+", o número será convertido diretamente em string
O acima "+" é bastante especial. Se for -, *, /; Então, em que tipo será convertido no final?
var área = "" * "a"; alerta (typeof (area)); // numberalert (área); // nanvar sub = "a" - ""; alerta (typeof (sub)); // nansub = "a" a "A alert (Subs); (div)); // nandiv = "a"/; alerta (typeof (div)); // nan
Como acima -, *, / é a aritmética em número. String e número não podem executar cálculos, portanto, seus valores são NAN. Número do tipo.
var a = true; alert (typeof (a)); // booleanvar b = "true"; var ab = a + b; alerta (typeof (ab)); // stringalert (ab); // TruetrouEalert (a == b); // false
Boolean e String, os tipos booleanos são automaticamente convertidos em string "true", mas por que não é igual a B
Vamos dar uma olhada neste exemplo:
var c = ""; alerta (typeof (c)); // stringvar d =; alert (typeof (d)); // numberalert (c == d); // true
O princípio da conversão é dado aqui: (para referência)
1. Se um operando for um booleano, converta -o em um valor numérico antes de comparar a igualdade - falsa a 0 e fiel a 1;
2. Se um operando é uma string e o outro operador é um valor numérico, a sequência será convertida em um valor numérico antes de comparar a igualdade;
3. Se um operando é um objeto e o outro operando não é, o método ValueOf () do objeto é chamado e o valor do tipo básico obtido é comparado de acordo com as regras anteriores.
Então, ao comparar strings e tipos booleanos, será:
Essa conversão ocorre: o verdadeiro booleano true primeiro se converte para o número 1, depois se converte em string "1" e depois se compara. O resultado deve ser falso.
número nulo e string boolean indefinido
var a = null; alerta (typeof (a)); // objectvar b = "hello"; var ab = a + b; alerta (typeof (ab)); // stringalert (ab); // nulhellovar c =; var ac = a * c; alerta (typeof (AC)); // númeroLert (AC); // if (a) // false {} else {alert ("false");} var u; alert (a == u); //verdadeiroDo exemplo dado, podemos ver:
O NULL é automaticamente convertido para a string "NULL" na String, representando o número 0 em número, que é equivalente a false no julgamento lógico e é o mesmo que indefinido quando o valor é expresso. Observe que == em vez de ===.
Embora == converte seu tipo de comparação ao comparar, seu tipo de variável não muda por causa de ==.