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

Převod písmen na VELKÁ a malá

Převedení textu na velká nebo malá písmena.

12 minut

Generátor náhodného čísla

Jak vygenerovat náhodné číslo z určitého rozsahu (v JavaScriptu, PHP atd.)

9 minut

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

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