Aký je rozdiel medzi ==
a ===
v jazyku JavaScript? Videl som aj operátory !=
a !==
. Existuje viac takýchto operátorov?
Pozrite sa sem: http://longgoldenears.blogspot.com/2007/09/triple-equals-in-javascript.html
Tri znamienka rovnosti znamenajú "rovnosť bez donútenia typu". Pri použití trojice rovná sa musia byť hodnoty rovnaké aj typovo.
0 == false // true
0 === false // false, because they are of a different type
1 == "1" // true, automatic type conversion for value only
1 === "1" // false, because they are of a different type
null == undefined // true
null === undefined // false
'0' == false // true
'0' === false // false
===
a !==
sú operátory striktného porovnávania:
JavaScript má striktné aj
typovo konverzné porovnávanie rovnosti. Pri
striktnej
rovnosti sú objekty porovnávané, musia mať rovnaký typ a:
- Dva reťazce sú striktne rovnaké, keď majú rovnakú postupnosť znaky, rovnakú dĺžku a rovnaký znaky na zodpovedajúcich pozíciách.
- Dve čísla sú si striktne rovné, keď sa číselne rovnajú (majú rovnakú číselnú hodnotu).
NaN
nie je nerovná ničomu, vrátaneNaN
. Kladné a záporné nuly sa rovnajú navzájom.- Dva logické operandy sa striktne rovnajú, ak sú oba pravdivé alebo oba sú nepravdivé.
- Dva objekty sú si striktne rovné, ak odkazujú na ten istý
Objekt
.- Typy
Null
aUndefined
sú==
(ale nie===
). [T. j. (Null==Undefined
) jepravdivé
, ale (Null===Undefined
) jenepravdivé
].