2013-04-22 11 views
9

Wydaje się, że niezdefiniowany jest własnością oknie/globalne:Czy niezdefiniowana właściwość okna/globalna?

enter image description here

Zawsze myślałem, że niezdefiniowany, podobnie jak zerową, wartość niepowtarzalnym w JavaScript.

Ale powyżej kodu (przetestowany w Chrome) mnie zmieszać.

Może niektóre wyjaśnienie, dlaczego

undefined in window 

oszacowania możliwych true, natomiast

null in window 

FALSE

+0

dotyczy:/questions/776950/javascript-undefined-undefined –

Odpowiedz

12

Nie tylko undefined, ale również Infinity i NaN są wartości global object, w w tym przypadku, window (od ES5.1 specification).

Fakt, że nie można przypisać wartości do undefined, jest zdefiniowana z wartością writableattribute ustawioną na false.

null jest primitive value (jak 5) z typeNull (jak Number do 5) nie właściwością window.

Spójrz na annotated ES5 specification, aby uzyskać więcej informacji na ten temat, jest całkiem czytelny!

+2

Właściwie przed ES5 można przypisać "niezdefiniowane". Nie powinieneś, ale możesz. I rzeczywiście w kodzie jQuery jest kod, który próbuje uzyskać prawdziwe niezdefiniowane na wypadek, gdyby ktoś przypisał rzeczy do niezdefiniowanego. – slebetman

+1

Istnieje wbudowana wartość 'niezdefiniowana', która" zdarza się być "używana jako wartość właściwości' window.undefined' (jest określona jako 'undefined', ale w niektórych implementacjach może być ponownie przypisana). Bardzo niezawodnymi sposobami uzyskania wartości 'undefined' są' void 0', '(function() {}())' oraz 'var undef;'. Polecam 'var undef = void 0;' użyte wewnątrz zakresu wzorca modułu. – Keen

Powiązane problemy