64 votes

Pourquoi JavaScript ne m'avertit-il pas lorsque j'utilise arr.lenght (misspelt) au lieu de arr.length dans une boucle? J'utilise aussi le mode strict

J'ai passé des heures à découvrir que j'avais mal orthographié le mot .length tant que .lenght . Il peut fonctionner normalement sans aucun avertissement. Pourquoi...?

J'utilise 'use strict' et je cours sur Node.js 10.13.0.

Code:

 'use strict';
let arr = [1, 2, 3, 4];
for(let i = 0; i < arr.lenght; i++) {
  console.log(arr[i]);
}

14voto

Rohan Dhar Points 1665

Les tableaux JavaScript sont traités comme des objets (bien qu'ils soient des instances de Array). Par conséquent, lorsque vous écrivez arr.lenght , il traite lenght comme une propriété d'un objet non défini. Par conséquent, vous n'obtenez pas d'erreur.

Il essaie simplement d'obtenir une propriété non définie. De plus, dans votre cas, la boucle ne s'exécute tout simplement pas car la condition de la boucle n'est jamais satisfaite.

5voto

gotnull Points 4918

La limite supérieure de la boucle est spécifiée comme lenght , une faute de frappe pour la longueur de la variable locale. Au moment de l'exécution, lenght sera évalué à undefined , donc le contrôle 0 < undefined est false . Par conséquent, le corps de la boucle n'est jamais exécuté.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X