1. O papel do JavaScript "=="
1. Quando o conteúdo de == em ambos os lados são strings, compare se o conteúdo da sequência é igual.
2. Quando o conteúdo de ambos os lados de == são números, compare se os tamanhos dos números são iguais.
3. Quando o conteúdo de ambos os lados de == são objetos ou atributos de função dos objetos, compare se os endereços de memória são iguais.
2. A diferença entre == e ===
== Usado para comparação geral, === Usado para comparação estrita, == você pode converter o tipo de dados durante a comparação, === Comparação estrita e retorno Flase, desde que os tipos não correspondam.
Dê um exemplo:
<script type = "text/javascript"> alert ("/"/"== resultado true é:"+("" == true)); alert ("/"/"=== True resultado é:"+("" == true)); alert ("/"/"=== True Result IS: "+(" "==)); alert ("/"/" ===== "+(" "==)); alert ("/"/" ===== "+(" "===)); </script>"1" == tipos verdadeiros são diferentes, "==" A conversão do tipo será realizada primeiro e fiel a 1 é convertida, ou seja, "1" == 1; No momento, os tipos ainda são diferentes, continuam a executar a conversão do tipo e "1" é convertido, ou seja, 1 == 1; Neste momento, "==" Os tipos de ambos os lados da esquerda e da direita são numéricos, o que é relativamente bem -sucedido!
"1" === True O lado esquerdo é o tipo de caractere, o lado direito é o tipo bool, os lados esquerdo e direito são diferentes, o resultado é falso;
"1" === 1 O lado esquerdo é um tipo de caractere, o lado direito é um tipo numérico int e os lados esquerdo e direito são diferentes, e o resultado é falso;
Resultados em execução:
Resumir:
A diferença entre == e ==: "==" Somente os valores precisam ser iguais; "===" Os valores e tipos precisam ser iguais.
Deixe -me explicar em detalhes a diferença entre três sinais iguais e dois sinais iguais no JavaScript.
== A igualdade é equivalente, === A identidade é a igualdade.
==, quando os dois lados têm diferentes tipos de valores, a conversão do tipo deve ser realizada primeiro e depois comparação.
==, nenhuma conversão de tipo é realizada, diferentes tipos devem ser diferentes.
Os seguintes são explicados separadamente:
Vamos falar sobre ===, isso é relativamente simples.
As regras a seguir são usadas para determinar se os dois valores === são iguais:
1. Se os tipos são diferentes, são [desiguais]
2. Se ambos são valores numéricos e são o mesmo valor, então [igual]; (! Exceção) é, se pelo menos um deles for nan, então [não é igual]. (Para determinar se um valor é nan, você só pode usar isnan () para julgar)
3. Se ambos são cordas e os caracteres em cada posição são os mesmos, então [igualdade]; caso contrário [não é igual].
4. Se ambos os valores forem verdadeiros ou ambos forem falsos, então [igual].
5. Se ambos os valores se referirem ao mesmo objeto ou função, então [igualdade]; caso contrário [não é igual].
6. Se ambos os valores forem nulos ou ambos indefinidos, então [igual].
Vamos falar sobre ==, de acordo com as seguintes regras:
1. Se os dois tipos de valor forem iguais, faça === comparação.
2. Se os dois tipos de valor forem diferentes, eles podem ser iguais. A conversão de tipo é realizada de acordo com as seguintes regras e depois comparada:
um. Se um é nulo e o outro é indefinido, então [igual].
b. Se um for uma string e o outro for um valor numérico, converta a sequência em um valor numérico e compare -o.
c. Se algum valor for verdadeiro, converta -o em 1 e compare -o; Se algum valor for falso, converta -o para 0 e compare -o.
d. Se um é um objeto e o outro for um ou string numérico, converta o objeto em um valor do tipo base e compare -o. Converta um objeto em um tipo básico e use seu método ToString ou ValueOf. A classe interna do núcleo JS tentará valorizar antes da tostragem; A exceção é a data, que usa conversão de tostramento. Objeto principal não JS,
Lingshuo (eu não entendo muito)
e. Qualquer outra combinação é [desigual].
Por exemplo:
"1" == Verdadeiro
Se os tipos forem diferentes, o verdadeiro será convertido primeiro ao valor 1 e agora se tornará "1" == 1 e depois converter "1" em 1 e compare 1 == 1, o que é igual.
= Operador de atribuição
== igual a
=== estritamente igual a
exemplo:
var a = 3;
var b = "3";
a == b retorna true
a === b retorna falsa
Porque os tipos de A e B são diferentes
=== Usado para fazer julgamentos de comparação estritos