Nebezpečné porovnání s booleanem

Radix Tree máme nástroj, který nám umožní najít cestu k našim klíčovým informacím rychle a efektivně.

AndreaAndrea

Pokud je to možné, používejte vždy operátor striktního porovnání === pro přesnější porovnání hodnot bez konverze typu. Při porovnávání s == se JS snaží automaticky konvertovat oba operandy na stejný typ, což může vést k neočekávaným výsledkům.

Všechny tyto hodnoty se vyhodnotí jako pravdivá hodnota!

console.log(false == '0');
console.log(null == undefined);
console.log('' == 0);

if ({}) {
	// ...
}

Nebezpečné porovnání s booleanem

Můžete chtít ověřit podmínku^fm-33, ve které dojde ke konverzi pole na logický výraz. Můžeme to udělat následujícími třemi způsoby.

var pole = [];
// if (Boolean(pole))
if (pole) {
	// ok
}

Nikdy nepoužívejte dvojité rovná se s true nebo false.

if (pole == true) {
	// ne
}

if (pole == false) {
	// ok
}

V tomto případě máme neprimitivní hodnotu, která se musí stát primitivní. Takže se z ní stane prázdný řetězec.

if ("" == true) {
	// ne
}

if ("" == false) {
	// ok
}

Tyto hodnoty, stále nejsou stejného typu, takže se z obou musí stát čísla. Takže konverze pokračuje

if (0 === 1) {
	// ne
}

if (0 === 0) {
	// ok
}

Jedno z nich se stane 0, druhé se stane 1.