var n;
this.ini=n;
Das ist tatsächlich eine Initialisierung mit undefined.
this.noini;
Das ist überhaupt keine Initialisierung. Das ist ein Expression Statement mit einem Identifier, der undefined ergibt. Es findet aber keine Wertzuweisung statt. Wenn du einfach
window.bla;
notierst, dann hat bla danach auch keinen Wert (also nichtmal undefined)! Wie kommst du darauf, dass es anders sein sollte?
Im Übrigen, welchen Sinn sollte eine solche Initialisierung mit undefined haben?
Wenn du eine Variable deklarieren willst, sie aber "keinen Wert" haben soll, dann nutzt man für gewöhnlich den speziellen Wert null.
Gemäss molily (siehe Link von Struppi) ergeben
(typeof foo.ini != 'undefined')und(typeof foo.noini != 'undefined')beidefalse; soweit kann ich das nachvollziehen.
Du brauchst die Eigenschaften nicht mit undefined füllen, damit das zutrifft.
Wie gesagt ist auch nur die eine "gefüllt".
Aber:
Nichts aber. Sondern folgerichtig.
('ini' in foo)ergibttrueund('noini' in foo)ergibtfalse.(!)
Das ist ganz logisch.
Mathias