Evitați variabile globale, pentru a evita new , evita == , evita eval()
Evitați variabile globale
Minimizarea utilizarea variabilelor globale.
Aceasta include toate tipurile de date, obiecte și funcții.
variabile și funcții globale pot fi suprascrise de alte script-uri.
Utilizați variabile locale în schimb, și să învețe cum să folosească dispozitive de închidere .
Declarați întotdeauna variabile locale
Toate variabilele utilizate într - o funcție trebuie să fie declarate ca variabile locale.
Variabilele locale trebuie să fie declarate cu var cuvântul cheie, în caz contrar ele vor deveni variabile globale.
modul strict nu permite variabile nedeclarate.
Declarații privind Top
Este o bună practică de codificare pentru a pune toate declarațiile de la partea de sus a fiecărui script sau funcție.
Asta va:
- Dă cod mai curat
- Furnizarea de un singur loc pentru a căuta variabile locale
- Asigurați -vă mai ușor pentru a evita nedorite (implied) variabile globale
- Reduce posibilitatea de a nedorite re-declarații
// 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;
Acest lucru este valabil și pentru variabilele buclă:
// Declare at the beginning
var i;
// Use later
for (i = 0; i < 5; i++)
{
În mod implicit, JavaScript mută toate declarațiile la partea de sus (JavaScript hoisting) .
Inițializare Variabile
Este o bună practică de codificare pentru a inițializa variabile atunci când le declara.
Asta va:
- Dă cod mai curat
- Furnizarea de un singur loc pentru a inițializa variabile
- Evitați valori nedefinite
// Declare and initiate at the beginning
var firstName = "",
lastName
= "",
price = 0,
discount = 0,
fullPrice
= 0,
myArray = [],
myObject = {};
Inițializarea variabilelor oferă o idee despre utilizarea preconizată (and intended data type) de (and intended data type) .
Niciodată Declarați Numărul, String, sau obiecte Boolean
trata întotdeauna numere, siruri de caractere, sau boolean ca valori primitive. Nu ca obiecte.
Declararea acestor tipuri ca obiecte, încetinește viteza de execuție, și produce efecte secundare neplacute:
Exemplu
var x = "John";
var y = new String("John");
(x === y) // is false because x is a string and y is an object.
Încearcă - l singur » Sau chiar mai rău:
Exemplu
var x = new String("John");
var y = new String("John");
(x == y) // is false because you cannot compare objects.
Încearcă - l singur » Nu utilizați new Object()
- Utilizați {} în loc de new Object()
- Utilizați "" în loc de new String()
- Utilizați 0 în loc de new Number()
- Utilizați false în loc de new Boolean()
- Utilizați [] în loc de new Array()
- Utilizați /()/ în loc de new RegExp()
- Utilizați function () {} în loc de new Function()
Exemplu
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
Încearcă - l singur » Feriți-vă de tip automate Conversii
Feriți - vă că numerele pot fi convertite în mod accidental la șiruri sau NaN (Not a Number).
este liber tipizat JavaScript. O variabilă poate conține diferite tipuri de date, precum și o variabilă poate schimba tipul de date:
Exemplu
var x = "Hello"; // typeof x is a string
x = 5; // changes typeof x to a number
Încearcă - l singur » Atunci când faci operații matematice, JavaScript poate converti numere la siruri de caractere:
Exemplu
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
Încearcă - l singur » Scăzând un șir de caractere dintr - un șir de caractere, nu generează o eroare , dar returnează NaN (Not a Number) :
Utilizați === Comparație
== operator de comparare convertește întotdeauna (to matching types) de (to matching types) înainte de comparație.
=== forțe operator de comparare a valorilor și tipul:
Exemplu
0 == ""; // true
1 == "1"; // true
1 == true; // true
0 === ""; // false
1 === "1"; // false
1 === true;
// false
Încearcă - l singur » Utilizați valori prestabilite Parametru
Dacă o funcție este apelată cu un argument lipsește, valoarea lipsește argumentul este setat la undefined .
Valorile nedefinite se pot sparge codul. Este un obicei bun pentru a atribui valori implicite pentru argumente.
Cititi mai multe despre parametrii funcției și argumentele la parametrii funcției
End dvs. comută cu valori prestabilite
termină întotdeauna declarațiile de comutare cu o valoare implicită. Chiar dacă credeți că nu este nevoie de ea.
Exemplu
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";
}
Încearcă - l singur » Evitați utilizarea de eval()
eval() funcția este folosit pentru a rula text cod. În aproape toate cazurile, nu ar trebui să fie necesar să-l folosească.
Deoarece permite rularea de cod arbitrar pentru a fi rulat, aceasta reprezintă, de asemenea, o problemă de securitate.