Přejít k navigační liště

Zdroják » Zprávičky » JavaScriptové perličky: [] není []!

JavaScriptové perličky: [] není []!

Zprávičky JavaScript, Různé

Na serveru WTFJS upozornil @remi na jednu zajímavost ohledně vytváření neinicializovaných proměnných v JavaScriptu.

var a = new Number;
a == 0 // true
var a = new String;
a == "" // true
var a = new Object;
a == {} // false
var a = new Array;
a == [] // false

Pokud implicitně nezadáme hodnotu pro číslo, je dosazena nula (0), pro řetězec prázdný řetězec („“). Poněkud matoucí to může být při použití zápisu JSON:

var a = {};
a == {} // false
var a = [];
a == [] // false

Komentáře

Odebírat
Upozornit na
guest
5 Komentářů
Nejstarší
Nejnovější Most Voted
Inline Feedbacks
Zobrazit všechny komentáře
mmmmario

A bude platit toto:
var a = []
a == null // true?
var a = {}
a == null // true?

pas

Ne.
Stačí si uvědomit, že [] je jenom zkrácený zápis pro new Array() a {} je zkrácený zápis pro new Object() a bude vše jasné.

pas

To ale není o neinicializo­vaných proměnných – ve všech těch příkladech inicializované jsou. :) Je to o vnímání {} jako atomické hodnoty, namísto instance třídy. Jakmile by to bylo zapsáno ekvivalentním new Object() == new Object(), už by to každého trklo. Jinak bych nepovažoval za smrtelný hřích používat neinicializované proměnné – pokud daný jazyk, resp. implementace, jasně zaručuje, jaké jsou výchozí hodnoty pro každý typ.

DevelX

Nič proti, ale čísla a reťazce sú v JS atomické hodnoty, pri porovnaní == sa porovnávajú ich hodnoty.
Oproti tomu objekt aj pole je inštanciou triedy objektu / pola, a teda sa pri použití == porovná rovnosť referencie na inštanciu. Nechápem, čo je na tom zarážajúce, takto by to predsa aj malo byť.
Pri každom použití [] alebo {} sa zo zjavných príčin vytvára nové pole / objekt.

juraj

Snáď ešte zmienim NaN == NaN – tiež false.

Strategie a AI jako klíč. Do Prahy přijely špičky technologického světa

WebExpo 2025 ukázalo, jak se tvoří budoucnost. Třídenní technologická konference WebExpo 2025 přivedla do Prahy světové i české experty, kteří nabídli inspiraci napříč obory. Hlavním tématem byla propojenost disciplín, význam AI a potřeba otevřenosti vůči novým výzvám – včetně podpory legální imigrace. Ukázalo se, že inovace vznikají nejen v Silicon Valley, ale i tam, kde se nebojíme myslet jinak.

Přístupnost není jen o splnění norem: nový pohled na inkluzivní design

Přístupnost a inkluze možná nepatří mezi nejžhavější témata digitálního světa – dokud o nich nezačne mluvit Vitaly Friedman. Na WebExpo 2024 předvedl, že inkluzivní design není jen o splněných checkboxech, ale hlavně o lidech. S energií sobě vlastní obrátil zažité přístupy naruby a ukázal, že skutečně přístupný web je nejen možný, ale i nezbytný.

Efektivnější vývoj UI nebo API: Co si odnést z WebExpo 2025?

Různé
Komentáře: 0
Jak snadno implementovat moderní uživatelské rozhraní? Které funkce brzdí rychlost vašeho webu? A kdy raději sami přibrzdit, abychom využitím AI nepřekročili etické principy? Debatu aktuálních dev témat rozdmýchá sedmnáctý ročník technologické konference WebExpo, která proběhne v Praze od 28. do 30. května. Který talk či workshop si rozhodně nenechat ujít? Toto je náš redakční výběr z vývojářských hroznů.