Warum geben JSfiddle und die Chrome-Konsole unterschiedliche Werte derselben Funktion zurück?

8

Ich habe den folgenden Code in JSfiddle .

%Vor%

Aber wenn ich denselben genauen Code in die Chrome-Konsole einfüge, wird die Funktion five() gedruckt 5. Warum?

    
Zip 13.04.2016, 14:57
quelle

2 Antworten

13

Standardmäßig umschließt JSFiddle den Code im window.onload -Ereignis, so dass Sie dies tatsächlich ausführen:

%Vor%

Das bedeutet, dass a lokal für diese Funktion ist, während this immer noch auf das globale Objekt verweist ( window ). In der Chrome-Konsole erstellt var a ohne die Wrapper-Funktion eine globale Variable, die erstellt und gespeichert wird als Eigenschaften für das globale Objekt und ist daher identisch mit window.a / this.a .

Wenn Sie zu den JavaScript-Optionen gehen und eine der Optionen "nowrap" wählen, wird auch 5 in JSFiddle protokolliert:

    
James Thorpe 13.04.2016, 15:02
quelle
-2

Ich würde den Code auf diese Weise schreiben, damit er 'überall' funktioniert.

%Vor%     
alessalessio 13.04.2016 15:07
quelle

Tags und Links