Contrairement à la langue Java, les tableaux en javascript ont trois fonctionnalités:
1. Pas de type. Les membres d'un tableau peuvent être de n'importe quel type, et le même tableau peut également être composé de nombreux types de membres différents.
2. La longueur est variable. La longueur d'un tableau peut être modifiée dynamiquement, il n'y a donc pas de problème à l'accès à l'accès à la matrice en JavaScript.
3. Discontinuité. Les positions des membres du réseau peuvent être continues (0, 1, 2, 3…) ou discontinue. Tout tableau a un attribut appelé longueur. Lorsque les membres du tableau sont continus, la valeur de longueur est cohérente avec le nombre de membres du tableau; Lorsque les membres du tableau ne sont pas continus, la valeur de longueur est supérieure au nombre de membres du tableau. Par rapport aux tableaux continus, les performances de lecture et d'écriture des tableaux discontinus sont pires.
expérience:
La copie de code est la suivante:
var o = [42, "Exemple de texte", {x: 88}]; // Le tableau JavaScript n'est pas typé.
console.log (o); // [42, "Exemple de texte", objet {x = 88}]
O [3] = 27; // Le tableau JavaScript est dynamique.
console.log (o); // [42, "Exemple de texte", objet {x = 88}, 27]
O [5] = 99; // Le tableau JavaScript est clairsemé.
console.log (o); // [42, "Exemple de texte", objet {x = 88}, 27, indéfini, 99]
Comme on peut le voir dans l'exemple ci-dessus, pour les tableaux discontinus, JavaScript reviendra indéfini lors de l'accès au membre manquant. Si le tableau est continu, mais l'un de ses membres n'est pas défini, le résultat de l'accès au tableau est le même:
La copie de code est la suivante:
var a = [42, "Exemple de texte", {x: 88}, 27, indéfini, 99];
console.log (a); // [42, "Exemple de texte", objet {x = 88}, 27, indéfini, 99]
Le tableau est discontinu et a des membres manquants, ce qui est le même que le tableau est continu mais a des membres non définis. Dans les deux cas, le résultat de l'accès au contenu du tableau est le même. Mais il existe encore des différences subtiles entre les deux, principalement manifestées dans l'accès à la clé de tableau:
La copie de code est la suivante:
console.log (4 in o); // false
console.log (4 en a); // vrai
On peut voir que, bien que les résultats obtenus en accédant au contenu dans ces deux cas soient les mêmes, leur mécanisme interne est complètement différent: lorsque le tableau est discontinu, un certain membre est manquant, donc lors de l'accès au membre, JavaScript renvoie indéfini; Lorsque le tableau est continu, tous les membres existent, mais les valeurs de certains membres sont relativement spéciales et non définies.
D'après l'exemple ci-dessus, nous pouvons également voir que l'essence des tableaux en JavaScript n'est qu'un objet avec des nombres comme des clés, et il n'y a pas de différence entre les valeurs de clés ordinaires et les objets. En fait, lors de la lecture et de l'écriture d'un tableau, JavaScript essaiera de convertir les paramètres en entiers positifs. Si la conversion est réussie, l'opération de tableau sera effectuée (mettez automatiquement à jour la propriété longueur du tableau). S'il échoue, les paramètres seront convertis en chaîne, puis liront et écrivent dans un objet normal. Bien sûr, dans la mise en œuvre de l'interprète JavaScript, de nombreuses optimisations de performances sont faites pour la fonctionnalité des tableaux en utilisant des nombres comme clés. Par conséquent, dans une utilisation réelle, si les clés de l'objet sont tous des nombres, l'utilisation directement de l'objet Array obtiendra des résultats plus efficaces.
Dans le processus de définition d'un tableau, JavaScript permet aux virgules supplémentaires d'apparaître et permet également aux membres du tableau manquant entre deux virgules:
La copie de code est la suivante:
var x = [1,2,3,]; // La virgule traîne sera omise.
console.log (x.length); // 3
var y = [1 ,, 3]; // membre peut être manqué.
console.log (y); // [1, non défini, 3]
console.log (1 en y); // faux
console.log (y.length); // 3
Pour la création du tableau, JavaScript prend en charge quatre méthodes:
1. Utilisez des littéraux (tels que les expressions de support dans les exemples ci-dessus) pour créer directement un objet de tableau.
2. Utilisez le constructeur Array () et ne passe pas dans aucun paramètre. Dans ce cas, un tableau vide est créé avec le même effet que [].
3. Utilisez le constructeur Array () pour passer dans un entier positif comme longueur du tableau. Dans ce cas, JavaScript réservera l'espace mémoire correspondant pour stocker ce tableau. Il convient de noter que les clés du tableau ne sont pas définies pour le moment, c'est-à-dire qu'il n'y a pas de membres dans le tableau. Son effet équivaut à celui de [,,,,]
4. Utilisez le constructeur Array () pour passer dans les membres du tableau.
expérience:
La copie de code est la suivante:
var z = nouveau tableau (10); // pré-allocation de la mémoire, mais aucun index n'est encore défini.
console.log (3 en z); // false
var m = nouveau tableau (42, 33, 99, "test", {k: 99});
console.log (m); // [42, 33, 99, "test", objet {k = 99}]
Dans la norme ECMAScript 5, array.isArray () peut être utilisé pour déterminer si un objet est un tableau:
La copie de code est la suivante:
Array.isArray ([]); // vrai
Array.isArray ({}); // false