Eine unsachgemäße Verwendung von JavaScript
In diesem Kapitel werden wir die Verwendung von JavaScript-Fehler zu diskutieren.
Anwendungszuordnung Bedienfehler
In JavaScript-Programm, wenn Sie eine bedingte Anweisung verwenden, wenn der Zuweisungsoperator das Gleichheitszeichen (=) ist, wird eine Fehler Ergebnis erzeugen, der richtige Ansatz ist es, einen Vergleich von zwei Gleichheitszeichen zu verwenden (==).
wenn bedingte Anweisung false zurückgibt (wir erwarten) , da x nicht gleich 10 ist:
wenn bedingte Anweisung gibt true (nicht , dass wir erwartet) Anweisung ausgeführt wird , weil die Bedingungen für die Zuweisung x 10.10 gilt:
wenn bedingte Anweisung gibt false (nicht das, was wir erwartet hatten) Anweisung ausgeführt wird , weil die Bedingungen für die Zuweisung x 0,0 ist falsch:
Gibt den Wert der Variablen-Zuordnung. |
Häufige Fehler Vergleich
Bei herkömmlichen Vergleich wird der Datentyp ignoriert, wenn die folgende Bedingung Anweisung liefert true:
In strengen Vergleichsoperation, eine Identität Berechnung === Operator, während der Wert des Ausdrucks der Typprüfung, die folgenden Bedingungen if-Anweisung false zurückgibt:
Dieser Fehler tritt häufig in der switch-Anweisung switch-Anweisung den Identitätsoperator berechnet (===) verglichen:
Die folgenden Beispiele Alarm Pop ausführen:
Die folgenden Beispiele sind inkonsistent, da der Typ nicht auf die Warnung Popups nicht durchführt:
Hinzufügen und Verbindungs Überlegungen
Eine Addition von zwei Zahlen zusammen.
Die Verbindungszeichenfolge , die beiden zu verbinden.
Addition und JavaScript werden mit dem Operator + verbunden.
Als nächstes können wir zwei Zahlen miteinander und mit einer Reihe von Zahlen und Unterscheidung beispielhaft zu sehen:
Die Verwendung von Variablen, die Ergebnisse Hinzufügen sind widersprüchlich:
var y = 5;
var z = x + y; Ergebnisse // z 15
var x = 10;
var y = "5";
var z = x + y; Ergebnisse // z "105"
Versuchen »
Beachten Sie die Verwendung von Floating-Point-Daten
JavaScript Alle Daten basieren auf 64-Bit - Gleitkomma - Datentyp (float) zu speichern.
Alle Programmiersprachen, einschließlich JavaScript, Punktgenauigkeit der Daten zu schwebenden sind schwer zu bestimmen:
var y = 0,2;
var z = x + y Ergebnisse // z 0,3
if (z == 0.3) // Gibt false zurück
Versuchen »
Ich dieses Problem lösen, können Sie eine ganze Zahl Multiplikation und Division zu lösen verwenden:
JavaScript-String Branchen
Wir verwenden Zeilenumbrüche JavaScript-Anweisungen in der Zeichenfolge auszuführen:
Doch in der String direkt Wagenrücklauf wird gegeben für:
Wir können das Entwicklungswerkzeug oder drücken Sie F12, wählen Sie die Fehlermeldung zu sehen:
String Zeilenumbrüche müssen einen Backslash (\) zu verwenden, wie folgt:
Falsches Semikolon
Das folgende Beispiel, da das Semikolon falsch, wenn die Anweisung Codeblock wird nicht ausgeführt:
Return-Anweisung Vorsichtsmaßnahmen
JavaScript ist der Standard endet automatisch in der letzten Zeile des Codes.
Die folgenden zwei Beispiele geben das gleiche Ergebnis (a kein Semikolon):
JavaScript kann auch eine mehrzeilige Anweisung zu beenden verwendet werden.
Die folgenden Beispiele geben das gleiche Ergebnis:
Allerdings werden die folgenden Beispiele der zurückgegebenen Ergebnissenicht definiert:
Warum gibt es ein solches Ergebnis? Da in JavaScript, um Beispiele für konsistente 4-Code und den folgenden Code:
function myFunction(a) { var power = 10; return; // 分号结束,返回 undefined a * power; }
auflösen
Wenn es eine unvollständige Anweisung ist wie folgt:
var
JavaScript wird versuchen, die zweite Zeile Anweisung zu lesen:
power = 10;
Da jedoch diese Aussage ist komplett:
return
JavaScript schaltet sich automatisch die Anweisung:
return;
In JavaScript ist das Semikolon optional.
Da die Rückkehr ein vollständiger Satz ist, wird es JavaScript return-Anweisung deaktivieren.
Hinweis: Verwenden Sie nicht die Linie der return - Anweisung brechen. |
Verwenden Sie ein Array-Indexnamen
Viele Programmiersprachen ermöglichen die Verwendung des Namens als Array-Index.
So verwenden Sie den Namen als der Index des Arrays aufgerufen wird ein assoziatives Array (oder Hash).
JavaScript nicht die Verwendung des Namens zu Index-Arrays unterstützen, nur einen numerischen Index.
Beispiele
Person [0] = "John" ;
Person [1] = "Doe" ;
Person [2] = 46;
var x = person.length; // Person.length Returns 3
var y = person [0]; // Person [0] gibt "John"
Versuchen »
In JavaScript, verwenden Sie den Namen des Objekts als Index.
Wenn Sie den Namen als Index verwenden, wenn das Array zugreift, wird JavaScript, um die Standard-Array von Objekten neu zu definieren.
Nach Durchführung dieser Operation, Methoden und Eigenschaften des Arrays werden nicht mehr verwendet werden, sonst wird es zu einem Fehler:
Beispiele
Person [ "firstname"] = " John";
Person [ "nachName"] = " Doe";
Person [ "Alter"] = 46 ;
var x = person.length; // person.length liefert 0
var y = person [0]; // Person [0] gibt undefined
Versuchen »
Definieren Sie ein Array-Element, und schließlich kann kein Komma hinzufügen
Fehler sind definiert:
points = [40, 100, 1, 5, 25, 10,];
Die korrekte Definition der Art und Weise:
points = [40, 100, 1, 5, 25, 10];
Definieren Sie das Objekt, und schließlich kann kein Komma hinzufügen
Fehler sind definiert:
websites = {site:"本教程", url:"www.w3big.com", like:460,}
Die korrekte Definition der Art und Weise:
websites = {site:"本教程", url:"www.w3big.com", like:460}
Nicht definiert nicht Null
In JavaScript, null für Objekte, nicht definiert für Variablen, Eigenschaften und Methoden.
Die Objekte sind nur dann möglich, als null, sonst undefiniert definiert.
Wenn wir wollen, zu prüfen, ob das Vorhandensein des Objekts, wenn das Objekt noch nicht einen Fehler werfen definiert ist.
Falsche Verwendung:
if (myObj !== null && typeof myObj !== "undefined")
Der richtige Weg ist, dass wir typeof verwenden müssen, um zu erkennen, ob ein Objekt definiert wurde:
if (typeof myObj !== "undefined" && myObj !== null)
Block-Rahmen
JavaScript nicht einen neuen Bereich in jedem Codeblock zu erstellen, der allgemeine Umfang der einzelnen Codeblock sind global.
Der folgende Code i Variable gibt 10 statt undefined: