Javascript 数组计数与控制台不一致?

标签 javascript arrays

<分区>

我在这里是不是很愚蠢? (我来自 Ruby,所以我可能遗漏了一些关于 Javascript 数组的内容)。

console.log(new_devices)

控制台中的结果:Array[1]

console.log(new_devices.length)

控制台结果:0

产生这个的代码:

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);

enter image description here

最佳答案

当您控制日志数组时,控制台会创建对该数组的引用,它不会向您显示执行时数组状态的快照。

(在您的代码中,项目被异步附加到列表中,因此当控制台日志打印时,列表是空的。)

考虑这个例子:

enter image description here

关于Javascript 数组计数与控制台不一致?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40810889/

相关文章:

javascript - knockout : what are the event available with evet handler

javascript - 将数据从 AngularJs 服务传递到 Controller 以及 Controller 到 Controller

javascript - JQuery 类

c - 如何用指向存储在另一个数组中的字符串的指针填充字符指针数组?

javascript - 我在 for 循环内得到相同的对象以进行 Angular 修改

c - 如何将数组中的数字与另一个数字进行比较? [C]

ruby-on-rails - 按 bool 值分组但在 ruby​​ on rails 中更改键

javascript - 如何获取输入字段的值并使用它来过滤数组?

javascript - 使用 AJAX 返回的表单验证

javascript - 需要使用 javascript trim 表单中的所有元素