Autor Zpráva
Ottik
Profil *
Ahoj, když napíš do konzole například toto:
neexistujici_promenna; // zobrazí se: ReferenceError: neexistujici_promenna is not defined
tak to hodí error
ale když napíšu napřáíklad toto
var muj_obj = {}; // prázdný objekt
muj_obj.shits; // zobrazí se pouze undefined bez chyby
proč nehodí chybu jako v tom prvním případě
Mlocik97
Profil
protože tá promenná už nieje prázdna, ale obsahuje prázdny nedefinovaný objekt.
Radek9
Profil
Ottik:
Jednoduše řečeno JS prostě rozlišuje mezi přístupem k neexistující proměnné a k neexistující vlastnosti nějakého objektu.

Pokud chceš ověřit, že je nějaká proměnná definovaná, tak to jde takto:
if (typeof someVariable !== 'undefined') {
  // Je definována
}

Pokud je (resp. má být) globální, můžeš (jako v případě tvé druhé ukázky) využít i přístup pomocí globálního objektu (podle kontextu je to většinou global nebo window):
if (window.someVariable !== undefined) {
  // Je definována
}

Tyto přístupy nicméně nerozlišují to, jestli je proměnná opravdu nedefinovaná, nebo jestli je definovaná, ale obsahuje hodnotu undefined (tzn. let someVariable = undefined;). Pokud chceš skutečně zjistit to, zda vůbec není definovaná, můžeš využít právě toho, že to hází ReferenceError, a pomocí try-catch si odchytit výjimku.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0