Moderní tvorba webových aplikací

O webu

Rozdíl mezi == a ===

Rozdíl mezi porovnáváním hodnota pomocí == a ===.

3 minuty

Pro porovnávání dvou hodnot existuje v PHP operátor ==.

$a = 1;
if ($a == 1) // něco se provede

Porovnávání dvojitým rovnítkem ale má v PHP (ale i v JavaScriptu) svá specifika. Před samotným porovnáním totiž obsah přetypuje.

Porovnání Výsledek
0 == "0" true
0 == 0.0 true
0 == "" true

Kladný výsledek porovnávání 0 == "" už může vypadat trochu divně. Ještě zvláštněji působí:

Porovnání Výsledek
'0e1' == 0 true
'1e2' == 100 true

Zde se budou rovnat různé zápisy čísla. To 1e2 znamená 1 * 10 ^ 2.

Vtipná situace může potom nastat při následujícím porovnání:

Porovnání Výsledek
md5('240610708') == md5('QNKCDZO') true

Nejedná se o problém v md5, ale o to, že:

  • md5('240610708')0e4620974319065090195629887368540
  • md5('QNKCDZO')0e8304004519934940580242199033910

Porovnávání dvěma = je tedy značně nevyzpytatelné.

Tři rovná se (===)

Použití === potom zajistí, že výše uvedené konstrukce skončí jako false.

Porovnání Výsledek
0 === "0" false
0 === 0.0 false
0 === "" false
'0e1' === 0 false

Automatický převod == na ===

Některé editory/IDE navrhují používat rovnou ===.

Důrazně ale varuji před automatickým nahrazením == za ===, snadno to může vytvořit fatální chybu v případě, že programátor s chováním dvou rovnítek (a přetypováním) počítal.

Související články

Detekce otevření DevTools

Jak zjistit, že se na stránce otevřely vývojářské nástroje.

13 minut

JavaScript null a undefined

Rozdíly mezi null a undefined v JavaScriptu, kdy je používat a jak se vyhnout běžným chybám.

12 minut

Sleep v JavaScriptu

Jak implementovat sleep/delay funkcionalitu v JavaScriptu pomocí Promise a async/await

6 minut

JavaScript Battery API

Jak v JS zjistit stav baterie, co dnes funguje a kdy API nepoužívat.

3 minuty

Web jecas.cz píše Bohumil Jahoda, kontakt
Seznam všech článků
2013–2025