Vermeiden Sie globale Variablen, vermeiden Sie new , vermeiden Sie == vermeiden eval()
Vermeiden Sie Globale Variablen
Minimieren Sie die Verwendung von globalen Variablen.
Dazu gehören alle Datentypen, Objekte und Funktionen.
Globale Variablen und Funktionen können von anderen Skripts überschrieben.
Verwenden Sie lokale Variablen statt, und lernen , wie zu verwenden Schließungen .
Erklären Sie immer lokale Variablen
Alle Variablen in einer Funktion verwendet werden , sollten als lokale Variablen deklariert werden.
Lokale Variablen müssen mit dem deklariert werden var Schlüsselwort, sonst werden sie globale Variablen werden.
Strict-Modus erlaubt keine nicht deklarierten Variablen.
Erklärungen zu den Top
Es ist eine gute Codierung der Praxis alle Erklärungen an der Spitze jedes Skript oder eine Funktion zu setzen.
Dieser Wille:
- Geben Sie saubereren Code
- Geben Sie einen einzigen Ort für lokale Variablen zu suchen
- Machen Sie es sich leichter unerwünschte (konkludente) globale Variablen zu vermeiden
- Reduzieren Sie die Möglichkeit von unerwünschten Wieder Erklärungen
// Declare at the beginning
var firstName, lastName, price, discount, fullPrice;
// Use later
firstName = "John";
lastName = "Doe";
price = 19.90;
discount = 0.10;
fullPrice = price * 100 / discount;
Dies gilt auch für Schleifenvariablen:
// Declare at the beginning
var i;
// Use later
for (i = 0; i < 5; i++)
{
Standardmäßig verschiebt JavaScript alle Erklärungen an die Spitze (JavaScript Hebe).
Initialisieren von Variablen
Es ist eine gute Codierung Praxis Variablen zu initialisieren, wenn Sie ihnen erklären.
Dieser Wille:
- Geben Sie saubereren Code
- Geben Sie einen einzigen Ort zu initialisieren Variablen
- Vermeiden Sie unbestimmte Werte
// Declare and initiate at the beginning
var firstName = "",
lastName
= "",
price = 0,
discount = 0,
fullPrice
= 0,
myArray = [],
myObject = {};
Initialisieren von Variablen liefert eine Vorstellung von der beabsichtigten Verwendung (und Datentyp bestimmt).
Erklären Sie nie Number, String oder Boolean Objekte
Immer behandeln Zahlen, Strings oder Boolesche Werte als Grundwerte. Nicht als Objekte.
Deklarieren diese Arten als Objekte, verlangsamt sich die Ausführungsgeschwindigkeit nach unten und erzeugt unangenehme Nebenwirkungen:
Beispiel
var x = "John";
var y = new String("John");
(x === y) // is false because x is a string and y is an object.
Versuch es selber " Oder noch schlimmer:
Beispiel
var x = new String("John");
var y = new String("John");
(x == y) // is false because you cannot compare objects.
Versuch es selber " Verwenden Sie keine new Object()
- Verwenden Sie {} anstelle von new Object()
- Verwenden Sie "" anstelle von new String()
- Verwenden Sie 0 , anstatt new Number()
- Verwenden Sie false anstelle von new Boolean()
- Verwenden Sie [] anstelle von new Array()
- Verwenden Sie /()/ anstelle von new RegExp()
- Verwenden Sie function (){} anstelle von new Function()
Beispiel
var x1 = {}; // new object
var x2 = ""; // new primitive string
var x3 = 0; // new primitive number
var x4 = false; // new primitive boolean
var x5 = []; // new array object
var x6 = /()/; // new regexp object
var x7 = function(){}; // new function object
Versuch es selber " Hüten Sie sich vor der automatischen Typkonvertierungen
Hüten Sie sich vor , dass die Zahlen versehentlich in Strings oder umgewandelt werden NaN (Not a Number).
JavaScript ist lose typisiert. Eine Variable kann verschiedene Datentypen enthalten, und eine Variable kann den Datentyp zu ändern:
Beispiel
var x = "Hello"; // typeof x is a string
x = 5; // changes typeof x to a number
Versuch es selber " Wenn mathematische Operationen tun, können Sie JavaScript Zahlen in Strings zu konvertieren:
Beispiel
var x = 5 + 7; // x.valueOf() is 12, typeof x is a number
var x = 5 + "7"; // x.valueOf() is 57, typeof x is a string
var x = "5" + 7; // x.valueOf() is 57, typeof x is a string
var x = 5 - 7; // x.valueOf() is -2, typeof x is a number
var x = 5 - "7"; // x.valueOf() is -2, typeof x is a number
var x = "5" - 7; // x.valueOf() is -2, typeof x is a number
var x = 5 - "x"; // x.valueOf() is NaN, typeof x is a number
Versuch es selber " Einen String aus einem String Subtrahierend, wird ein Fehler nicht erzeugen , sondern liefert NaN (Not a Number):
Verwenden === Vergleich
Der == Vergleichsoperator konvertiert immer (um passende Typen) vor dem Vergleich.
Die === Operator Kräfte Vergleich der Werte und Typ:
Beispiel
0 == ""; // true
1 == "1"; // true
1 == true; // true
0 === ""; // false
1 === "1"; // false
1 === true;
// false
Versuch es selber " Verwenden Sie Parameter Vorgabe
Wenn eine Funktion mit einem fehlenden Argument aufgerufen wird, wird der Wert des fehlenden Argument zu setzen undefined .
Nicht definierte Werte können Sie Ihren Code brechen. Es ist eine gute Gewohnheit, Standardwerte Argumente zuweisen.
Lesen Sie mehr über Funktionsparameter und Argumente in Funktionsparameter
Lassen Sie den Schalter mit Defaults
Immer Ihre Switch-Anweisungen mit einem Standard zu beenden. Auch wenn Sie denken, es dafür keine Notwendigkeit besteht.
Beispiel
switch (new Date().getDay()) {
case 0:
day = "Sunday";
break;
case 1:
day = "Monday";
break;
case 2:
day = "Tuesday";
break;
case 3:
day = "Wednesday";
break;
case 4:
day = "Thursday";
break;
case 5:
day = "Friday";
break;
case 6:
day = "Saturday";
break;
default:
day =
"Unknown";
}
Versuch es selber " Vermeiden der Verwendung von eval()
Die eval() Funktion wird verwendet , um Text als Code auszuführen. In fast allen Fällen sollte es nicht notwendig sein, es zu benutzen.
Weil es beliebigen Code ermöglicht ausgeführt werden, sondern stellt auch ein Sicherheitsproblem.