== solía llamarse el operador de igualdad abstracta, y su algoritmo de comparación de igualdad abstracta se definió en la especificación ECMAScript.
Este algoritmo ahora se llama IsLooselyEqual en la especificación, y el término "igualdad abstracta" ya no se usa en la especificación.
¿Se ha cambiado el nombre del operador?
Puede llamar == al operador de igualdad abstracta porque verifica de acuerdo con el algoritmo de comparación de igualdad abstracta. Entonces, este es un nombre válido, aunque no oficial, para él.
El nombre más popular para esto es "igualdad suelta". También un nombre no oficial. Se opone a la "igualdad estricta" con === .
El operador simplemente se denomina "el operador de igualdad" en ECMAScript 5 .
En ECMAScript 6, la especificación tiene una sección paraguas 12.10 Operadores de igualdad que agrupa == , != , === y !== . Sin embargo, partes de la especificación todavía mencionan "el operador de igualdad" como 12.10.3 Semántica de tiempo de ejecución: Evaluación , que dice lo siguiente al final de la sección:
NOTA 2 Los operadores de igualdad mantienen los siguientes invariantes:
A != Bes equivalente a!(A == B).A == Bes equivalente aB == A, excepto en el orden de evaluación deAyB.NOTA 3 El operador de igualdad no siempre es transitivo. Por ejemplo, puede haber dos objetos String distintos, cada uno de los cuales representa el mismo valor String; cada objeto String sería considerado igual al valor String por el operador
==, pero los dos objetos String no serían iguales entre sí. Por ejemplo:
new String("a") == "a"y"a" == new String("a")sontrue.new String("a") == new String("a")esfalse.
Este sigue siendo el caso en la última especificación oficial ECMAScript 12 (2021). La sección relevante es13.11 Operadores de igualdad que aún contiene == , != , === y !== . El final de 13.11.1 Runtime Semantics: Evaluation todavía contiene las mismas notas que ECMAScript 6.
Por lo tanto, el operador es "el operador de igualdad*. La operación que realiza se llama Comparación de igualdad abstracta en ECMAScript 12 (con una "Comparación de igualdad estricta" análoga para === ) y recientemente se le cambió el nombre a IsLooselyEqual (con un "IsStrictlyEqual" análogo ") en el último borrador (2022).
En ECMAScript 5, el operador == se denominaba " operador de igualdad ", y === se denominaba " operador de igualdad estricta ".
En ES2022, el término " operadores de igualdad " se utiliza para abarcar ambos (y no se produce el emparejamiento de palabras "operador de igualdad").
El término "operador de igualdad suelta" no aparece en ES2022, aunque el algoritmo utilizado para definir su comportamiento se llama IsLooselyEqual .
El término "operador de igualdad estricta" no aparece en ES2022, aunque el algoritmo utilizado para definir su comportamiento se llama IsStrictlyEqual .
Sobre esta base, diría que == nunca* se llamó oficialmente el "operador de igualdad abstracto". Era el "operador igual". Sin embargo, dado que este término ya no se usa en la especificación, tal vez su nombre haya cambiado a "operador de igualdad" o posiblemente a "operador de igualdad flexible" (siendo el contrario "operador de igualdad estricta").
*necesita verificar antes de ES5