Qu'est-ce que "indéfini x 1" en JavaScript?

Je fais quelques petites expériences en fonction de cette entrée de blog .

Je fais cette recherche dans le débogueur Google Chrome et voici la partie difficile.

C'est quoi ce truc?!

Je reçois le fait que je ne peux pas supprimer les variables locales (car elles ne sont pas des attributs d'objet). Je comprends que je peux lire tous les paramètres passés à une fonction à partir du tableau appelé 'arguments'. Je l'ai même compris que je ne peux pas supprimer et l'élément du tableau, je ne peux que faire en sorte que array[0] ait une valeur non définie.

Est-ce que quelqu'un peut m'expliquer ce undefined x 1 signifie sur l'image intégrée?

Et lorsque je remplis la fonction foo pour renvoyer les arguments[0] , alors j'ai l'habituel et le 'normal' indéfini.

Ce n'est qu'une expérience, mais semble interresser, est-ce que quelqu'un sait à quoi se réfère le undefined x 1 ?

    Cela semble être la nouvelle façon d'afficher les index non initialisés dans les tableaux (et les objets similaires à un tableau ) de Chrome:

     > Array(100) [undefined × 100] 

    Ce qui est certainement mieux que d'imprimer [undefined, undefined, undefined,...] ou bien c'était avant.

    Bien que, s'il n'y a qu'une seule valeur undefined , ils pourraient abandonner le x 1 .

    Google Chrome semble choisir d'afficher un réseau dispersé en utilisant cette notation undefined xn . Il montrera [undefined, undefined] s'il ne s'agit pas d'un réseau dispersé:

     var arr = new Array(2); console.log(arr); var arr2 = []; arr2[3] = 123; console.log(arr2); var arr3 = [,,,]; console.log(arr3) var arr4 = [,]; console.log(arr4) var arr5 = [undefined, undefined] console.log(arr5) var arr6 = [undefined] console.log(arr6) 

    Arr1 à arr4 sont tous des tableaux épars, alors que arr5 et arr6 ne le sont pas. Chrome les affichera comme suit:

     [undefined × 2] [undefined × 3, 123] [undefined × 3] [undefined × 1] [undefined, undefined] [undefined] 

    Notez [undefined x 1] pour le tableau sparse.

    Puisque vous avez supprimé un élément, il s'ensuit que: si vous supprimez un élément d'un tableau, le tableau devient clairsemé.

    Voici comment cela se présente, tapez ce code dans la console chrome devtools: –

     arr = new Array(4); arr[2] = "adf"; console.log(arr); // [undefined × 2, "adf", undefined × 1] 

    Voir les deux premiers "indéfinis" consécutifs qui sont représentés par * 2, pour montrer qu'il y a deux consécutifs non définis là-bas

    Ça vient de moi aussi. Ouvrez la même chose dans un autre navigateur et affichez / enregistrez le tableau dans la console. Tant qu'il fonctionne à la fois dans crome et dans firefox, il en va de même (comme pour accéder aux éléments fonctionne bien, même si la sortie a undefinedx1), je considère qu'il s'agit d'une sorte de bogue dans Chrome qui ne rafraîchit pas quelque chose en interne. Vous pouvez le tester de cette façon:

    1. J'ajoutais des éléments à un tableau et je lance console.log () pour enregistrer l'élément, pour vérifier s'il ne l'était pas ou non. Ils ont tous été définis.
    2. Après la poussée (), j'ai enregistré le tableau et il semblait que lorsque cela arrivait, c'était toujours le dernier indéfini x 1 sur Chrome.
    3. Ensuite, j'ai essayé de l'enregistrer plus de fois et plus tard, mais avec le même résultat.
    4. Cependant, lorsque j'ai accédé (pour le bien-être de la sortie), l'élément par son index, il a renvoyé la valeur appropriée (drôle).
    5. Après cela, j'ai de nouveau enregistré le tableau et il a déclaré que le dernier index était indéfini x 1 (le seul que je viens d'accéder directement avec succès!).
    6. Ensuite, j'ai fait une boucle pour le tableau, l'enregistrement ou l'utilisation de chaque élément, tout s'est bien passé.
    7. Une autre connexion sur le tableau, encore buggy.

      Le code que j'utilise à l'origine a des vérifications pour indéfinis et ils n'ont pas déclenché, mais je voyais tous ces indéfinis dans la console et ça me gênait (sans jeu de mots).

    Vaut également la peine de lire: Variables non dimensionnées dans un tableau lorsque vous utilisez uniquement Array.push? J'utilise aussi pop () dans mon code et c'est une explication raisonnable que le journal de la console représente réellement un état différent dans le temps (lorsque le code est "arrêté").