• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] Frage zu "use strict"

mikdoe

Moderator
Hallo!

Durch Zufall habe ich entdeckt, dass der folgende Code keinen Fehler wirft:
HTML:
<script>
	"use strict";
	if (true) { var x = 123; }
	console.log(x);
</script>

Dieser hier läuft auf Fehler wie erwartet.
HTML:
<script>
	"use strict";
	var test = function() { var x = 123; };
	console.log(x);
</script>

Ist das im oberen Fall nicht anders möglich? Mir wäre eigentlich lieber wenn auch der obere Code fehlerhaft wäre, so bin ich das aus meiner Serverscript Sprache gewohnt.
Was hat es damit auf sich? Wieso ist das in JS so gemacht?
 
Ich versuche es mal zu erklären, ich hoffe es ist verständlich. :)

Der obere Code wirft deshalb keinen Fehler, weil JS Code von oben nach unten abgearbeitet wird. In die If-Anweisung im oberen Code geht er immer rein und somit ist x immer definiert. Im unteren Codeblock ist x erst dann definiert, wenn test aufgerufen wurde. Deshalb gibt es hier einen Fehler.
 
Danke rico. Wieso gibt dann dieser Code auch keine Fehlermeldung?
HTML:
<script>
	"use strict";
	if (1==2) { var x = 123; }
	console.log(x);
</script>
 
Dieser Code dürfte nicht funktionieren. Ich habe es gerade auch mal ausprobiert, bei mir wird ein undefined angezeigt, was korrekt ist. Hast du vielleicht nicht alle Fehlermeldungen in deiner Konsole aktiviert? Irgendwie konnte man da mal spezielle ausschalten, oder?
 
rico: nein, hab nichts abgeschaltet.

und was hesst meint, müsste das hier sein: Hoisting
Danke hesst!

Das hoisting ist mir unsympathisch :(

Aber jetzt wird es ein bisschen klarer.
 
Zurück
Oben