2010-03-19 25 views

Respuesta

19

En PHP, JavaScript, ECMAScript, ActionScript 3.0, y un número de otros idiomas similares, dinámicas, hay dos tipos de controles de igualdad: == (igualdad no estricto) y === (igualdad estricta). Para mostrar un ejemplo:

5 == "5" // yep, these are equal, because "5" becomes 5 when converted to int 
5 === "5" // nope, these have a different type 

Básicamente, cada vez que utilice ==, corre el riesgo conversiones de tipos automáticos. Usar === asegura que los valores son lógicamente iguales Y que los tipos de los objetos también son iguales.

+0

¿Hay alguna diferencia entre Javascript y ECMAScript? –

+2

@Turtle, sí. ECMAScript es el esfuerzo de estandarización del lenguaje en el que se basa JavaScript (JavaScript fue primero), y hay muchos lenguajes, no solo JavaScript, que derivan su sintaxis central de ECMAScript pero luego agregan otros elementos o construcciones (por ejemplo, ActionScript 3.0).La diferencia clave entre JavaScript y ECMAScript es que JavaScript es ECMAScript tal como ocurre en la práctica ... es decir, cómo los navegadores realmente implementan ECMAScript (como desviaciones del estándar, extensiones, etc.) –

+1

Hiciste un error tipográfico en el segundo ejemplo , debería ser '5 ===" 5 "' en lugar de '5 === 5'. –

8

Se usa en JavaScript, PHP y puede ser más (¡que aún no he encontrado!), Se usa para comparar si las dos cosas comparadas son del mismo tipo de objeto y tienen el mismo valor.

+0

También se utiliza en PHP .. – vpram86

+0

No solo JS. También en muchos otros idiomas. –

+0

@Aviator @ Felix gracias por señalar, editado :) –

1

=== es la igualdad, al menos en PHP

Here is a link que ayuda a explicar thsi

+0

Y en Prolog también, según recuerdo. No estoy seguro. – MatrixFrog

2

Por lo general, pone a prueba si dos objetos son los mismos. es decir. no si tienen el mismo valor (s) pero si realmente son el mismo objeto.

16

En JavaScript, == escribe coerción, mientras que ===, el operador de "igualdad estricta" no lo hace. Por ejemplo:

"1" == 1; // true 
"1" === 1; // false 

También hay un operador de desigualdad estricta correspondiente, !==.

3

"===" operador se utiliza para comprobar los valores son iguales, así como mismo tipo.

Ejemplo

$a === $b if $a is equal to $b, and they are of the same type. 
0

En Ruby, el triple igual es el operador (implícitamente) utilizado por la construcción case/when para determinar cuándo un objeto "cae dentro" de un caso particular. Por ejemplo, Ruby tiene un concepto de objetos "Rango"; 1..10 significa "todos los valores entre 1 y 10, inclusive". Entonces `3 == 1..10 'es falso, ya que el 3 es un número y el 1..10 es un Rango. Pero,

3 === 1..10 devuelve verdadero, ya que 3 es en ese rango.

caso/cuando lo usa al decidir a qué caso pertenecen los argumentos. Por lo tanto,

case a 
    when (1..10) 
    puts "This is a valid rating" 
    else 
    puts "invalid" 
    end 

funciona como esperaba.