Was ist "undefined" x 1" in JavaScript?
Ich bin dabei einige kleine Experimente basierend auf
Ich mache diese Forschung in der Google Chrome-debugger und hier kommt der harte Teil.
Ich die Tatsache, dass ich nicht löschen kann lokale Variablen (da Sie nicht Objekt-Attribute). Ich verstehe, dass ich kann 'Auslesen' alle Parameter an eine Funktion übergeben wird aus dem array mit dem Namen 'Argumente'. Ich bekommen Sie sogar, die kann ich nicht löschen und das array-element nur erreichen, haben array[0]
haben einen Wert von undefined.
Kann jemand mir erklären, was undefined x 1
bedeutet auf das eingebettete Bild?
Und wenn ich die überschreiben-Funktion foo
die Rückkehr der arguments[0]
, dann bekomme ich die übliche und 'normale' nicht definiert.
Dies ist nur ein experiment, aber scheint interessant, weiß jemand, was undefined x 1
bezieht sich auf?
- Technisch sind Sie nicht der Umgang mit einer
Array
aber mit einem array-wieObject
. - Bitte beachten Sie, dass
arguments
ist kein Array, sondern einArguments
Objekt (obwohl es sieht aus und verhält sich ähnlich). Auch, entfernen von Elementen aus einem array erfolgt nicht mit derdelete
Betreiber. - Ja, ich weiß, man, dass ist, warum ich 'in der Lage bin" löschen, sondern nur die Referenz auf den Wert, richtig? Ansonsten ist der array der Länge kürzer wäre mit einem.
- Sind Sie sagen, dass die Methode, wenn Sie erstellen ein temporäres array und Klonen wollte Elemente überspringen Sie unerwünschte? Oder Sie haben etwas anderes im Kopf?
- Sie suchen eine filter-Methode? Sollten Sie die Schleife über das arguments-Objekt mit einer for(var i<Argumente.Länge)-Schleife und schieben Sie die Elemente, die Sie möchten, zu einem neuen array.
- Nein, Nein, es war nur ein experiment mit dem löschen. =) Nichts mehr. =) Ich dachte nur, Sie haben etwas anderes in Ihren Geist mit dem entfernen von Elementen aus einem array... =)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zu sein scheint, dass Chrome die neue Art der Darstellung nicht initialisierte Indizes in arrays (und array-wie Objekte):
Das ist sicherlich besser als das drucken
[undefined, undefined, undefined,...]
oder aber es vorher war.Obwohl, wenn es nur eine
undefined
Wert, Sie könnten fallen diex 1
.undefined
s, z.B.new Array(100)
ruft es aber[undefined, undefined]
nicht0
und1
tatsächlich vorhanden sind im array. Änderte den Wortlaut meiner Antwort ein bisschen.Google Chrome scheint zu wählen, um die Anzeige sparse-array mit dieser
undefined x n
notation. Es wird sich zeigen[undefined, undefined]
wenn es nicht ein sparse-array:arr1 zu arr4 sind alle sparse-arrays, während arr5 und arr6 nicht. Chrome zeigt Ihnen wie:
Hinweis: die
[undefined x 1]
für das sparse-array.Da Sie ein element gelöscht, es folgt, dass: Wenn Sie löschen ein element aus einem array, das array spärlich.
Hier ist, wie es aussieht, Geben Sie diesen code in chrome devtools-Konsole:-
Siehe die ersten beiden aufeinander folgenden "undefined" dargestellt werden, indem Sie *2, um zu zeigen, dass es zwei aufeinander folgende undefined es
Neueren Versionen von Chrome verwenden
empty
stattundefined
machen den Unterschied ein wenig klarer.Beispielsweise die Eingabe
[,,undefined,,]
im DevTools-Konsole Ergebnisse in:Es ist einfach passiert, mir auch. Öffnen Sie die gleiche Sache in einem anderen browser und Ausgabe - /log-array auf der Konsole aus. Solange es funktioniert in beide crome und firefox auf die gleiche Weise wie bei dem Zugriff auf die Elemente funktioniert gut, auch wenn der Ausgang der undefinedx1), halte ich es für eine Art von bug in Chrome nicht aktualisieren etwas intern. Kann man tatsächlich testen Sie es auf diese Weise:
Dann ein anderes Protokoll auf die Reihe, aber immer noch buggy.
Den code ich bin ursprünglich über hat, prüft nicht und Sie hat nicht das Feuer, aber ich sah all diese undefineds in der Konsole und es war nervt mich (kein Wortspiel beabsichtigt).
Ebenfalls lesenswert: Nicht initialisiertes Variablen in einem array, wenn Sie nur Array.push? ich bin mit pop() auch in meinem code, und es ist eine vernünftige Erklärung, dass die Konsole stellt tatsächlich einen anderen Staat in der Zeit (wenn der code 'gestoppt').