Derniers tutoriels de développement web
 

JavaScript Erreurs courantes


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:

var x = 0;
if (x == 10)
Essayez - le vous - même »

Cette if instruction renvoie true (peut - être pas comme prévu), parce que 10 est remplie:

var x = 0;
if (x = 10)
Essayez - le vous - même »

Cette if instruction renvoie false (peut - être pas comme prévu), parce que 0 est faux:

var x = 0;
if (x = 0)
Essayez - le vous - même »

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 :

var x = 10;
var y = "10";
if (x == y)
Essayez - le vous - même »

En comparaison stricte, le type de données est importante. Cette déclaration se retourne false :

var x = 10;
var y = "10";
if (x === y)
Essayez - le vous - même »

Il est une erreur commune à oublier que les déclarations de commutation utilisent stricte comparaison:

Ce commutateur de cas afficher une alerte:

var x = 10;
switch(x) {
    case 10: alert("Hello");
}
Essayez - le vous - même »

Ce commutateur de cas ne sera pas afficher une alerte:

var x = 10;
switch(x) {
    case "10": alert("Hello");
}
Essayez - le vous - même »

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:

Exemple

var z = (x * 10 + y * 10) / 10;       // z will be 0.3
Essayez - le vous - même »

Briser une chaîne JavaScript

JavaScript vous permettra de briser une déclaration en deux lignes:

Exemple 1

var x =
"Hello World!";
Essayez - le vous - même »

Mais, brisant une déclaration dans le milieu d'une chaîne ne fonctionnera pas:

exemple 2

var x = "Hello
World!";
Essayez - le vous - même »

Vous devez utiliser un "backslash" si vous devez casser une déclaration dans une chaîne:

exemple 3

var x = "Hello \
World!";
Essayez - le vous - même »

Mauvais placement Semicolon

En raison d'une virgule mal placée, ce bloc de code exécutera quelle que soit la valeur de x:

if (x == 19);
{
    // code block 
}
Essayez - le vous - même »

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:

Exemple 1

function myFunction(a) {
    var power = 10 
    return a * power
}
Essayez - le vous - même »

exemple 2

function myFunction(a) {
    var power = 10;
    return a * power;
}
Essayez - le vous - même »

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:

exemple 3

function myFunction(a) {
    var
    power = 10; 
    return a * power;
}
Essayez - le vous - même »

Mais, ce qui se passera si vous cassez la déclaration de retour dans deux lignes comme ceci:

exemple 4

function myFunction(a) {
    var
    power = 10; 
    return
    a * power;
}
Essayez - le vous - même »

La fonction retourne undefined!

Pourquoi? Parce que JavaScript pense que vous vouliez dire:

exemple 5

function myFunction(a) {
    var
    power = 10; 
    return;
    a * power;
}
Essayez - le vous - même »

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:

Exemple

for (var i = 0; i < 10; i++) {
    // some code
}
return i;
Essayez - le vous - même »