No JavaScript, os operadores == e == podem ser usados para determinar se os dois valores são iguais; A diferença é que, se os dois valores julgados forem inconsistentes, a operadora === retornará diretamente falsa, enquanto o operador == fará um julgamento após a conversão do tipo. As regras detalhadas de julgamento são as seguintes:
=== Regras para o julgamento dos operadores
1. Se os tipos dos dois valores forem inconsistentes, retorne falsos.
2. Se os dois valores tiverem o mesmo tipo e os valores forem iguais, retorne true. Nan é um caso especial, Nan === Nan retorna falsa.
3. Se ambos os valores forem do tipo de objeto, como Java, a menos que as referências sejam consistentes (os pontos de referência para o mesmo endereço de objeto), mesmo que o conteúdo do objeto seja exatamente o mesmo, os dois valores são considerados inconsistentes e a operação correspondente retornará falsa. Por exemplo, crie duas novas matrizes com exatamente o mesmo conteúdo e, em seguida, execute a operação === neles e retorne o resultado a False - embora seu conteúdo seja exatamente o mesmo, eles ainda pertencem a dois objetos diferentes.
4.0 ===-0 retorna true.
== Regras para julgamento de operadores
O operador == digitará o valor e o comparará. A conversão de tipo segue os seguintes princípios: primeiro converta -o em número e depois compare -o, e primeiro converta -o em string e depois compare -o. As regras de julgamento específicas são as seguintes:
1. Se os dois tipos de valor forem iguais, retorne após executar a operação ===.
2.null == indefinido é verdadeiro.
3. True será convertido em 1 e comparado, FALSE será convertido em 0 e comparado.
4. Se um dos valores for um objeto, converta -o para o número e compare -o, exceto o objeto Data.
5. Se um dos valores for um objeto de data, converta -o em string e compare -o.
experimentar
A cópia do código é a seguinte:
console.log ("3" === 3); // false
console.log (nan === nan); // false
var a = {x: 1, y: 2};
var b = {x: 1, y: 2};
var c = a;
console.log (a === b); // false
console.log (a === c); // true
console.log (0 === -0); // true
console.log ("3" == 3); // true
console.log (null == indefinido); // true
console.log (true == 1); // true
console.log (true == 9); // false
console.log ([9] == 9); // true
console.log ([9] == "9"); // true
var d = new Date ();
var s = d.ToString ();
var n = d.valueOf ();
console.log (d == s); // true
console.log (d == n); // false