2012-11-26 15 views
15

In den letzten Monaten habe ich viel über JavaScript gelernt. Nachdem ich die Sprachen jahrelang missbraucht habe, wage ich zu sagen, dass ich jetzt ein besseres Verständnis der Sprache habe und dass ich Liebe die Vorteile seiner funktionalen Natur habe.
In letzter Zeit habe ich gelernt, Scheme zu lernen, aber das ist nur zum Spaß. Durchsuchen der MDN reference bemerkte ich, dass JS, obwohl Block Umfang fehlt, hat ein Schlüsselwort, das verwendet werden kann, eine lokale Variable zu einem bestimmten Block zu erklären, ähnlich wie Scheme let:lassen Sie var oder var zu lassen

for (var i=0;i<someArray.length;i++) 
{ 
    console.log(someArray[i]); 
} 
console.log(i);//will log someArray's length 

Während:

for (let i=0;i<someArray.length;i++) 
{ 
    console.log(someArray[i]); 
} 
console.log(i);//undefined 

Also was ich jetzt wissen möchte ist: Warum wird let nicht häufiger verwendet? Hat es etwas mit X-Browser-Unterstützung zu tun? Ist es nur einer dieser weniger bekannten Goodies?
Kurz gesagt, was sind die Vorteile der Verwendung var über let, was sind die Vorbehalte?

Soweit ich das beurteilen kann, ist das Verhalten von let ist, wenn überhaupt, konsistentere (Doppel Erklärungen in einem einzigen Block ein TypeError, mit Ausnahme der Funktionskörper (ECMA6 Entwürfe dieses Problem beheben erhöhen, obwohl).
sein ehrlich, abgesehen von dieser Funktion/keyword nicht sehr bekannt ist, kämpfe ich von jedes Argumente zu denken gegen let für Schleifen, oder überall dort, wo eine temporäre Variable für lesbaren Code macht.

Antwort

28

Ja, es hat ganz mit Browser-Unterstützung zu tun.Zurzeit implementiert nur Firefox (da es Teil ihrer Obermenge von ECMAScript ist).

Aber es ist coming in ES6, so gibt es Hoffnung ...

Ich bezweifle, könnte man sagen, dass es viele Vorteile für die var über let gegeben, dass beide unterstützt werden. Ich denke, das Mantra let ist die neue var

+0

Kann nicht akzeptieren Ihre Antwort (5 Minuten) sein wird, aber Sie haben völlig Recht, und ich Ihre Hoffnungen teilen ... Dumme, obwohl Derzeit verwende ich Chrome, und wenn ich mir gerade die Zeit genommen hätte, meine Konsole zu öffnen und 'let x = 1;' zu versuchen, hätte ich gewusst, dass da ein Problem ist. Dumm, aber immer noch: "Lasst uns hoffen, dass jeder, der diese Frage liest, eine Bitte zur Unterstützung einleitet so schnell wie möglich in die ECMA-Mailingliste schickt :) –

+1

@EliasVanOotegem: Ja, ich habe gehört, ihr Ziel ist Dezember 2013, also haben wir Einige warten, aber Sie können einige der neuen Funktionen aktivieren, die in Chrome implementiert wurden, indem Sie ein Start-Flag setzen, um experimentelles JavaScript zuzulassen. Nicht sicher, ob "let" zu diesen gehört. Um diese zu setzen, tippe "chrome: // flags /" in die Adressleiste von chrome. –

+0

Nur experimentelle Features aktiviert, und "Let" wird unterstützt, jedoch gibt es einige Unterschiede zwischen FF und Chrome, obwohl ein Teil davon möglicherweise auf die Art und Weise zurückzuführen ist, wie die Konsole _eval_ der Code ist. Wie auch immer eine große +1 und danke für den Link –