/ / Javascript Array Anzahl stimmt nicht mit der Konsole überein? [duplizieren] - Javascript, Arrays

Javascript Array-Anzahl stimmt nicht mit der Konsole überein? [Duplizieren] - Javascript, Arrays

Bin ich hier dumm? (Ich komme aus Ruby, daher fehlt mir möglicherweise etwas an Javascript-Arrays.)

console.log(new_devices)

Ergebnis in der Konsole: Array[1].

console.log(new_devices.length)

Ergebnis in der Konsole: 0

Der Code, der dies erzeugt:

var sp = require("serialport");
var new_devices = [];

sp.list(function(err, ports) {
ports.forEach(function(current) {
if (current.manufacturer == "Teensyduino") {
new_devices.push(current);
}
});
});

console.log(new_devices);
console.log(new_devices.length);

Bildbeschreibung hier eingeben

Antworten:

2 für die Antwort № 1

Wenn Sie Konsolenprotokollarrays erstellen, erstellt die Konsole einen Verweis auf dieses Array. Sie zeigt keine Momentaufnahme des Status des Arrays zum Zeitpunkt der Ausführung an.

(In Ihrem Code werden Elemente asynchron an die Liste angehängt. Wenn also das Konsolenprotokoll gedruckt wird, ist die Liste leer.)

Betrachten Sie dieses Beispiel:

Bildbeschreibung hier eingeben