2017-10-17 2 views
0

Wenn die Variable im aktuellen Bereich nicht gefunden wird, sucht die JS-Engine nach dem Parental Score, bis sie den globalen Gültigkeitsbereich erreicht.Unterschied zwischen window.someRandomVar und someRandomVar

nun in Browser, wenn ich versuche, unter

console.log(someRandomVariable); 
// This throws ReferenceError as someRandomVariable is Not found on Global/Window scope. 

Aber wenn ich es explizit auf Fenster-Objekt aufrufen, zeigt es nicht definiert.

Nach meinem Verständnis, der ehemalige sucht auch nur auf Fensterobjekt, da es nicht in einem Funktionsumfang ist.

Warum hat es 2 verschiedene Verhaltensweisen?

Antwort

1
console.log(someRandomVariable); 

Javascript sieht die someRandomVariable, kann es nicht in jedem Bereich finden und wirft die Ausnahme Sie sehen. Sie haben recht, wenn Sie sagen, dass der Fensterbereich durchsucht wird - aber Sie haben diese Variable nicht im Fensterbereich (oder in einem beliebigen Bereich) definiert. So scheitert es.

console.log(window.someRandomVariable) 

Javascript sucht die window Variable. Es gelingt, dann geht es weiter zum Attribut someRandomVariable. Dies ist nicht definiert und Sie erhalten undefined.

Es ist wahrscheinlich erwähnenswert, dass, wenn Sie versuchten, auf ein Attribut einer undefinierten Variablen zuzugreifen, Sie auch einen Fehler erhalten würden. Dh, versuchen Sie window.someRandomVariable.someRandomVariable.


Der Unterschied ist, dass man eine Variable sucht, und die andere ist ein Attribut Zugriff.