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/39547992/

相关文章:

php - 在 PHP 中删除关联数组的重复元素

javascript - 如何在两个函数之间来回切换

javascript - Codeigniter csrf ajax错误

javascript - 如何在智能手机浏览器中获取表格 html 的全宽?

javascript - 合并 2 个数组变化

ajax - 如何将 int 数组从 ajax 发送到 c# mvc?

c++ - 在 C++ 中将静态数组声明为指针

javascript - 在 Javascript 中将数组设置为 Map 值

javascript - Material UI Select 组件导致 React 应用程序崩溃

javascript - vue条件显示