2016-03-23 4 views
0

Mein Kopf dreht sich, kann jemand bitte erklären, wie Javascript Variablen speichert und was "Ausführungskontext" und "das Ausführungskontextobjekt" ist?Ausführungskontext und das Ausführungskontextobjekt in Javascript

Warum funktioniert der Code-Schnipsel gibt folgende Ausgabe auf der Konsole:

das hallo Argument

das hallo Argument

var hello = 'hello is assigned'; 
 

 
function prison(hello) { 
 
    console.log(hello); 
 
    var hello; 
 
    console.log(hello); 
 
} 
 
prison('the hello argument');

Dank!

Antwort

2

Dies hat weniger mit Ausführungskontext und alles mit Funktionsumfang Bereich zu tun. Sie übergeben 'the hello argument' als Argument für die Funktion und lokal wird es anstelle der hello var außerhalb der Funktion deklariert verwendet.

Die var hello tut nichts und wenn Sie use strict oder einen Linter verwenden würde wahrscheinlich eine Warnung (versuchen, eine vorhandene Variable zu deklarieren).

Wenn Sie es in var hello = null; geändert haben, sehen Sie eine Änderung an der Ausgabe.

Nun, wenn Sie den folgenden Code hatte:

var hello = 'hello is assigned'; 

function prison() { 
    console.log(hello); 
    var hello; 
    console.log(hello); 
} 

prison(); 

... würden Sie undefined für beide Protokolle erhalten. Dies wäre aufgrund variable hoisting - Variablendeklarationen zu Beginn einer Funktion vor der Ausführung bewegt werden - so würde der Code erscheint tatsächlich wie so:

function prison() { 
    var hello; 
    console.log(hello); 
    console.log(hello); 
} 

hello ist undefined in beiden Fällen.

1

Ihre Funktion prison() Schließung über variable hello hat, wird die var hello; in prison() nicht eine neue Variable zu schaffen, kann die Funktion sieht, dass es bereits eine globale Variable ist hello definiert, so dass es diese Variable verwendet und somit erhalten Sie 2 the hello argument

wenn gab es jedoch keine hello vor prison() definiert Sie 2 undefined bcoz die Definition von hello in prison() und hello gehißt würde bekommen würde keinen Wert zu setzen.

Verwandte Themen