Évitez les variables globales, éviter de new , d' éviter == , évitez eval()
Évitez les variables globales
Minimiser l'utilisation des variables globales.
Cela inclut toutes les données types, des objets et des fonctions.
Les variables globales et les fonctions peuvent être remplacées par d'autres scripts.
Utilisez des variables locales à la place, et apprendre à utiliser les fermetures .
Déclarez toujours variables locales
Toutes les variables utilisées dans une fonction doivent être déclarés comme des variables locales.
Les variables locales doivent être déclarées avec le var mot - clé, sinon ils deviendront variables globales.
Mode Strict ne permet pas de variables non déclarées.
Déclarations sur Top
Il est une bonne pratique de codage pour mettre toutes les déclarations dans la partie supérieure de chaque script ou une fonction.
Cette volonté:
- Donner un code plus propre
- Offrir un lieu unique pour trouver des variables locales
- Rendre plus facile d'éviter (implicites) des variables globales non désirées
- Réduire la possibilité de re-déclarations indésirables
// 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;
Cela vaut également pour les variables de boucle:
// Declare at the beginning
var i;
// Use later
for (i = 0; i < 5; i++)
{
Par défaut, JavaScript déplace toutes les déclarations au sommet (JavaScript levage).
Initialisation Variables
Il est une bonne pratique de codage pour initialiser les variables lorsque vous les déclarez.
Cette volonté:
- Donner un code plus propre
- Offrir un lieu unique pour initialiser les variables
- Eviter des valeurs non définies
// Declare and initiate at the beginning
var firstName = "",
lastName
= "",
price = 0,
discount = 0,
fullPrice
= 0,
myArray = [],
myObject = {};
Initialisation des variables donne une idée de l'utilisation prévue (et destiné type de données).
Ne jamais déclarer Number, String, ou objets booléens
Toujours traiter nombres, des chaînes ou des booléens comme valeurs primitives. Pas comme des objets.
Déclarer ces types comme des objets, ralentit la vitesse d'exécution, et produit des effets secondaires désagréables:
Exemple
var x = "John";
var y = new String("John");
(x === y) // is false because x is a string and y is an object.
Essayez - le vous - même » Ou pire encore:
Exemple
var x = new String("John");
var y = new String("John");
(x == y) // is false because you cannot compare objects.
Essayez - le vous - même » Ne pas utiliser new Object()
- Utilisez {} au lieu de new Object()
- Utilisez "" au lieu de new String()
- Utilisez 0 au lieu de new Number()
- Utilisez false au lieu de new Boolean()
- Utilisez [] au lieu de new Array()
- Utilisez /()/ au lieu de new RegExp()
- Utilisez la function (){} au lieu de new Function()
Exemple
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
Essayez - le vous - même » Méfiez-vous des conversions automatiques de type
Méfiez - vous que les nombres peuvent être accidentellement convertis en chaînes ou NaN (Not a Number).
JavaScript est vaguement typé. Une variable peut contenir différents types de données, et une variable peut changer de type de données:
Exemple
var x = "Hello"; // typeof x is a string
x = 5; // changes typeof x to a number
Essayez - le vous - même » Lorsque vous effectuez des opérations mathématiques, JavaScript peut convertir les nombres en chaînes:
Exemple
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
Essayez - le vous - même » Soustraire une chaîne à partir d' une chaîne, ne génère pas une erreur , mais renvoie NaN (Not a Number):
Utilisez === Comparaison
Le == opérateur de comparaison convertit toujours (à des types correspondant) avant la comparaison.
La === comparaison des valeurs et le type de forces de l' opérateur:
Exemple
0 == ""; // true
1 == "1"; // true
1 == true; // true
0 === ""; // false
1 === "1"; // false
1 === true;
// false
Essayez - le vous - même » Utilisez les valeurs par défaut des paramètres
Si une fonction est appelée avec un argument manquant, la valeur de l'argument manquant est réglé sur undefined .
Les valeurs non définies peuvent briser votre code. Il est une bonne habitude d'attribuer des valeurs par défaut aux arguments.
En savoir plus sur les paramètres et les arguments de fonction à Paramètres de fonction
Fin Vos Interrupteurs avec les valeurs par défaut
Toujours terminer vos déclarations de commutation avec une valeur par défaut. Même si vous pensez qu'il n'y a pas besoin.
Exemple
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";
}
Essayez - le vous - même » Évitez d' utiliser eval()
Le eval() fonction est utilisée pour exécuter le texte comme code. Dans presque tous les cas, il ne devrait pas être nécessaire de l'utiliser.
Parce qu'il permet un code arbitraire à exécuter, il représente également un problème de sécurité.