Ce chapitre souligne certaines erreurs JavaScript communes.
Utilisation de Accidentally l'opérateur d'affectation
Programmes JavaScript peuvent générer des résultats inattendus si un programmeur utilise accidentellement un opérateur d'affectation (=) , au lieu d'un opérateur de comparaison (==) dans une instruction if.
Cette if instruction renvoie false (comme prévu) , parce que x est pas égal à 10:
Cette if instruction renvoie true (peut - être pas comme prévu), parce que 10 est remplie:
Cette if instruction renvoie false (peut - être pas comme prévu), parce que 0 est faux:
Une cession renvoie toujours la valeur de la cession.
Expecting Comparaison lâche
En comparaison régulière, type de données n'a pas d'importance. Cette déclaration se retourne true :
En comparaison stricte, le type de données est importante. Cette déclaration se retourne false :
Il est une erreur commune à oublier que les déclarations de commutation utilisent stricte comparaison:
Ce commutateur de cas afficher une alerte:
Ce commutateur de cas ne sera pas afficher une alerte:
Confondre Addition & concaténation
L' addition est sur l' ajout de numéros.
Concaténation est sur l' ajout de chaînes.
Dans les deux opérations JavaScript utilisent le même opérateur +.
De ce fait, l'ajout d'un numéro comme numéro produira un résultat différent de l'ajout d'un nombre comme une chaîne:
var x = 10 + 5; //
the result in x is 15
var x = 10 + "5";
// the result in x is "105"
Essayez - le vous - même » Lors de l'ajout de deux variables, il peut être difficile d'anticiper le résultat:
var x = 10;
var y = 5;
var z = x + y;
// the result in z is 15
var x = 10;
var y = "5";
var z =
x + y;
// the result in z is "105"
Essayez - le vous - même » incompréhension Flotteurs
Tous les nombres en JavaScript sont stockées sous forme de 64-bits de nombres à virgule flottante (Flotteurs).
Tous les langages de programmation, y compris JavaScript, ont des difficultés avec précision valeurs à virgule flottante:
var x = 0.1;
var y = 0.2;
var z = x + y
// the result in z will not be 0.3
if (z == 0.3)
// this if test will fail
Essayez - le vous - même » Pour résoudre le problème ci-dessus, il contribue à multiplier et diviser:
Briser une chaîne JavaScript
JavaScript vous permettra de briser une déclaration en deux lignes:
Mais, brisant une déclaration dans le milieu d'une chaîne ne fonctionnera pas:
Vous devez utiliser un "backslash" si vous devez casser une déclaration dans une chaîne:
Mauvais placement Semicolon
En raison d'une virgule mal placée, ce bloc de code exécutera quelle que soit la valeur de x:
Briser une déclaration de retour
Il est un JavaScript comportement par défaut pour fermer automatiquement une déclaration à la fin d'une ligne.
De ce fait, ces deux exemples le même résultat:
JavaScript vous permettra également de briser une déclaration en deux lignes.
À cause de cela, l'exemple 3 sera également le même résultat:
Mais, ce qui se passera si vous cassez la déclaration de retour dans deux lignes comme ceci:
La fonction retourne undefined!
Pourquoi? Parce que JavaScript pense que vous vouliez dire:
Explication
Si une déclaration est comme incomplète:
var
JavaScript va essayer de compléter la déclaration en lisant la ligne suivante:
power = 10;
Mais depuis que cette déclaration est complète:
return
JavaScript se fermera automatiquement comme ceci:
return;
Cela arrive parce que la fermeture (fin) avec des déclarations virgule est facultatif en JavaScript.
JavaScript fermera la déclaration de retour à la fin de la ligne, car il est une déclaration complète.
Ne jamais briser une déclaration de retour.
Accès aux tableaux avec les indices nommés
De nombreux langages de programmation prennent en charge des tableaux avec des indices nommés.
Les tableaux avec des index nommés sont appelés tableaux associatifs (ou hash).
JavaScript ne supporte pas les tableaux avec des index nommés.
En JavaScript, les tableaux utilisent des index numérotés:
Exemple
var person = [];
person[0] = "John";
person[1] = "Doe";
person[2] = 46;
var x = person.length;
// person.length will return 3
var y = person[0];
// person[0] will return "John"
Essayez - le vous - même » En JavaScript, les objets utilisent les index nommés.
Si vous utilisez un index nommé, lors de l'accès d'un tableau, JavaScript va redéfinir le tableau à un objet standard.
Après la redéfinition automatique, méthodes de tableau et les propriétés vont produire des résultats non définis ou incorrects:
Exemple:
var person = [];
person["firstName"] = "John";
person["lastName"] = "Doe";
person["age"] = 46;
var x = person.length; // person.length will
return 0
var y = person[0];
// person[0] will return undefined
Essayez - le vous - même » Mettre fin à une définition de tableau avec un Comma
Incorrect:
points = [40, 100, 1, 5, 25, 10,];
Certains moteurs JSON et JavaScript échoueront, ou se comporter de façon inattendue.
Correct:
points = [40, 100, 1, 5, 25, 10];
Mettre fin à une définition de l'objet avec un Comma
Incorrect:
person = {firstName:"John", lastName:"Doe", age:46,}
Certains moteurs JSON et JavaScript échoueront, ou se comporter de façon inattendue.
Correct:
person = {firstName:"John", lastName:"Doe", age:46}
Undefined est Non Null
Avec JavaScript, null est pour les objets, undefined est pour les variables, les propriétés et les méthodes.
Pour être nulle, un objet doit être défini, sinon il sera indéfini.
Si vous voulez tester si un objet existe, cela va lancer une erreur si l'objet est indéfini:
Incorrect:
if (myObj !== null && typeof myObj !== "undefined")
À cause de cela, vous devez tester typeof () en premier:
Correct:
if (typeof myObj !== "undefined" && myObj !== null)
Expecting Portée niveau bloc
JavaScript ne crée pas un nouveau champ d' application pour chaque bloc de code.
Il est vrai dans de nombreux langages de programmation, mais pas vrai dans JavaScript.
Il est une erreur commune, parmi les nouveaux développeurs JavaScript, de croire que ce code renvoie undefined: