Je pensais que je savais comment déclarer des tableaux javascript, mais dans ce script, je reçois une boucle infinie de undefined
éléments dans le tableau.
Je déclare trois tableaux de nombres, deux d'entre eux ayant plusieurs valeurs et l'autre ayant une valeur unique.
J'ai une instruction switch qui assigne l'un des trois tableaux à un nouveau nom de variable cluster_array
Quand je lance un for
faire une boucle cluster_array
, Je reçois une boucle infinie et chaque élément si undefined
Qu'est-ce que je rate?
<script type="text/javascript">
var ga_west_cluster = new Array(10,11,12,14,74,75,76,77,78,79,80,81,82,83,85,86,87,88,89,90,91,92,295,296);
// original bad array
var ga_east_cluster = new Array(84);
// added an extra (dummy) value and it works fine
var ga_east_cluster = new Array(1,84);
var sc_cluster = new Array(93,94,95,96,97,98,99,100,101,102,103);
</script>
Voici la alert
texte:
var test_message = "cluster datan";
for(var k=0;k<cluster_array.length;k++)
test_message += "value: "+cluster_array[k]+"n";
Réponses:
14 pour la réponse № 1Ne "initialisez pas les tableaux comme ça. Faites toujours ceci à la place:
var myarray = [value, value, value, ... ];
Le constructeur "Array ()" est terriblement conçu. La forme à un seul argument, lorsque l'argument est un nombre, est interprétée comme une demande d'initialisation d'un tableau contenant autant de valeurs "vides". C’est une chose inutile à faire, donc en général, vous feriez bien mieux d’utiliser la notation constante de tableau (comme dans mon exemple ci-dessus).
Cela ne semble plus se produire dans le monde modernenavigateurs, mais j’ai juré qu’il était un temps où au moins certains navigateurs allouaient effectivement de la mémoire au constructeur à argument unique, ce qui n’était pas vraiment utile, mais dangereux pour le code qui pourrait accidentellement passer par un très grand nombre.