Frage

Ich habe JSLint benutze mich schlecht über meine JavaScript zu fühlen. Es ist großartig, nebenbei bemerkt. Es ist eine Prüfung, die ich nicht ganz verstehen, und ich würde Ihre Meinung, bitte.

jslint.com :

  

In Sprachen mit Block Umfang wird in der Regel empfohlen, Variablen an der Stelle der ersten Verwendung deklariert werden. Aber weil kein JavaScript Block Umfang haben, ist es klüger, die alle einer Funktion Variablen am Anfang der Funktion zu erklären. Es wird empfohlen, dass eine einzelne Anweisung var pro Funktion verwendet werden.

Was ist der letzte sentance in fett wirklich sagen? Ich denke, ich sollte mehrere Variablen wie das?

werden erklärt
var foo = 1, bar = 2;

Und den „weise“ Teil nur einen Programmierstil Fehler auf der ganzen Linie zu entmutigen oder ist es mehr als das?

Danke für Ihre Hilfe.

War es hilfreich?

Lösung

Das Problem ist, dass, ob Sie es wahrhaben wollen oder nicht, JavaScript unsichtbar alle var Erklärungen an die Spitze des Funktionsumfangs bewegt.

Wenn Sie also eine Funktion wie diese

var i = 5;
function testvar () {
     alert(i);
     var i=3;
}
testvar();

das Alarmfenster enthält nicht definiert. weil intern, ist es in dieser geändert:

var i = 5;
function testvar () {
     var i;
     alert(i);
     i=3;
}
testvar();

Dies ist „Hebe“ genannt. Der Grund Crockford so spricht sich nachdrücklich var Erklärungen an der Spitze gehen, ist, dass es der Code sichtbar entsprechen, was macht es tun wird, anstatt daß unsichtbar und unerwartetes Verhalten auftreten.

Andere Tipps

Im Grunde genommen in JavaScript-Blöcken ({ ... }) keinen neuen Rahmen einführen, gibt es nur funktions Umfang, so ist kein Raum für jede andere Anweisung erstellt.

Eine Variable überall in Funktion eingeführt ist überall sichtbar in der Funktion.

Zum Beispiel:

function myFunction(){
  var one = 1;

  if (one){
    var two = one + 1;
  }

  (function () {
    var three = one + two;
  })();

  // at this point both variables *one* and *two* are accessible but 
  // the variable *three* was declared in the scope of a inner function
  // and is not accessible  at this point.
}

In Sprachen mit Block Umfang empfiehlt er die Variablen an der Stelle der ersten Verwendung zu erklären, aber da kein JavaScript Block Umfang haben, ist es besser, alle einer Funktion Variablen am Anfang der Funktion zu erklären.

Überprüfen Sie diese Artikel .

Der Mangel an Block Umfang erklärt den Code unten:

var a = 1;
if (something) {
    var a = 2;
}

alert(a); // Alerts "2"

In den meisten C-Stil (wie in der Syntax) Sprachen, würde die var a = 2 Definition definieren 'a' nur für den Geltungsbereich des if Block. eine einzige var-Anweisung am Anfang der Funktion hilft, diese Marotte von Javascript zu vermeiden, was nicht immer so offensichtlich wie die oben ist, und würde zu C / C # / Java-Programmierer unerwartet sein.

Ja, es bedeutet, dass Sie alle Variablen, die am Anfang der Funktion deklarieren. Ob Sie es tun in einer Zeile oder mehrere Zeilen ist eine Frage der Wahl.

Der Grund wird in dem Abschnitt erklären Sie erwähnt. Javascript Variablen nur Funktionsebene Umfang haben. Wenn Sie die gleiche Variable innerhalb einer if / while / for Block deklarieren, wird es durch den neuen Wert überschrieben werden, da der Block nicht trägt einen neuen Bereich. Dies unterscheidet sich von Sprachen wie Java. Um solche Überraschungen zu vermeiden, erklären alle Variablen, die Sie in der Funktion zu Beginn der Funktion verwenden werden, so dass Sie nicht versehentlich ‚neu deklarieren‘ andything.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top