Maison >interface Web >js tutoriel >Les tableaux JavaScript sont-ils vraiment denses ou présentent-ils un comportement clairsemé ?
Nature clairsemée des tableaux Javascript
En Javascript, les tableaux sont intrinsèquement clairsemés, ce qui signifie qu'ils n'attribuent pas automatiquement de mémoire pour tous les éléments entre 0 et l'indice actuel. Au lieu de cela, les éléments ne sont alloués que lorsqu'ils sont accédés ou attribués.
Par exemple, considérons le code suivant, où nous définissons un élément à l'heure actuelle comme index :
array[Date.getTime()] = value;
Contraire à ce à quoi on pourrait s'attendre, cela n'amène pas l'interprète à allouer tous les éléments de 0 au moment actuel. Au lieu de cela, il alloue uniquement l'élément spécifique auquel on accède.
Implémentation de la table de hachage
Les tableaux Javascript sont implémentés en interne sous forme de tables de hachage. Cela signifie que les clés (indices) peuvent non seulement être des entiers mais également des chaînes, des flottants ou des objets. Lors de leur insertion dans la table de hachage, toutes les clés sont converties en chaînes à l'aide de la méthode toString().
Code de vérification
Vous pouvez vérifier cette nature clairsemée avec le test suivant code :
var array = []; array[0] = "zero"; array[new Date().getTime()] = "now"; array[3.14] = "pi"; for (var i in array) { console.log("array[" + i + "] = " + array[i] + ", typeof(" + i + ") == " + typeof(i)); }
Ce code parcourt les indices et sorties réellement définis :
array[0] = zero, typeof(0) == string array[1254503972355] = now, typeof(1254503972355) == string array[3.14] = pi, typeof(3.14) == string
ce qui démontre que les indices non entiers fonctionnent également sans allouer d'éléments intermédiaires. Cependant, notez que l'utilisation de la boucle for traditionnelle avec i allant de 0 à array.length peut entraîner des problèmes avec les index de tableau non standard.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!