Groups | Search | Server Info | Keyboard shortcuts | Login | Register
Groups > de.comp.lang.javascript > #5043
| From | Thomas 'PointedEars' Lahn <PointedEars@web.de> |
|---|---|
| Newsgroups | de.comp.lang.javascript |
| Subject | Re: "let" ausserhalb eines Blocks |
| Date | 2019-04-22 22:36 +0200 |
| Organization | PointedEars Software (PES) |
| Message-ID | <90af1457-2d5f-557c-610e-61f60447f357@PointedEars.de> (permalink) |
| References | <let-20190422202050@ram.dialup.fu-berlin.de> <4bc5fbc8-993a-9b04-9e21-1c60aec65d1a@PointedEars.de> |
Thomas 'PointedEars' Lahn wrote: > Kompatibilität oder Transpiler (z. B. Babel <https://babeljs.io/>) > vorausgesetzt, ist es in produktivem Code immer besser, “let” oder “const” > statt “var” zu verwenden, denn: > > - der Gültigkeitsbereich einer Variablen wird auf einen lexikalischen > Kontext, unabhängig vom Ausführungskontext, begrenzt (z. B. auf Block > Anweisungen); > > - Mehrfachdeklarationen in einem lexikalischen Kontext sind > definitionsgemäss nicht möglich, Deklarationen mit gleichen Bezeichnern > in unterschiedlichen lexikalischen Kontexten aber schon (vermeidet > Nebeneffekte); Wichtig: Die Deklaration bezogen auf einen lexikalischen Kontext hat auch zur Folge, dass Referenzen auf eine Variable nicht zulässig sind, bevor die Variable im Quelltext deklariert wurde. Dies gilt auch, wenn die Referenz das Argument des typeof-Operators ist: /* undefined */ typeof x; var x; aber: /* ReferenceError: x is not defined */ typeof x; let x; Dies kann man als Nachteil von “const” und “let” gegenüber “var” betrachten, es führt aber zu weniger fehlerträchtigem Code. (Es führt auch zu einem Codestil, den ich schon immer praktiziere und empfohlen habe: man deklariere die Variablen dort, wo man sie zuerst braucht, und NICHT irgendwo – weder ganz unten noch ganz oben – im Code.) IMHO sollte es den Feature-Test, der mit dem typeof-Operator abwärtskompatibel möglich ist, nicht beeinflussen, da es sich bei Features um Eigenschaften und nicht um Variablen handelt. Bestehender Test-Code muss aber sorgfältig überprüft werden und sollte besser nicht im globalen Kontext ausgeführt werden (weil der dazugehörige lexikalische Kontext naturgemäss weniger gut bekannt ist). <http://es-discourse.com/t/why-typeof-is-no-longer-safe/15> -- PointedEars Twitter: @PointedEars2 Please do not cc me. / Bitte keine Kopien per E-Mail.
Back to de.comp.lang.javascript | Previous | Next — Previous in thread | Find similar
Re: "let" ausserhalb eines Blocks Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2019-04-22 22:22 +0200 Re: "let" ausserhalb eines Blocks Thomas 'PointedEars' Lahn <PointedEars@web.de> - 2019-04-22 22:36 +0200
csiph-web