Javascript - 数组是对象类型,在声明数组后直接在 .push 处失败
Posted
技术标签:
【中文标题】Javascript - 数组是对象类型,在声明数组后直接在 .push 处失败【英文标题】:Javascript - Array is of type object and failing at .push directly after declaration of array 【发布时间】:2021-09-17 10:36:16 【问题描述】:const audio = connection.receiver.createStream(message, mode: 'pcm', end: 'manual' );
var testingArr = new Array();
audio.on('data', (data) =>
console.log(Array.isArray(testingArr)); //output: false
testingArr.push(data);
);
这里的正文显示 testingArr 不是数组类型 这是怎么回事?
我希望在几秒钟内将新数据添加到数组中,以便我可以将其解密为文本字符串。
我也试过 var testingArr = [],遇到同样的问题
我尝试运行此脚本时遇到的错误:
TypeError: testingArr.push is not a function
at Decoder.<anonymous>
【问题讨论】:
您的代码看起来不错。你需要知道typeof
并不总是告诉你你想知道什么。您还需要知道,如果它不是一个标量值(字符串、数字、布尔值、null、符号),那么该项目就是一个对象——JS 中的一切都是一个对象,甚至函数和数组也是如此。以下表达式始终为真:typeof [] === 'object'
。你可以使用Array.isArray(testingArr)
来检查某个东西是否真的是一个数组。
@Absent mindInsanity 该代码应该可以工作。代码中没有任何部分分配给testingArr
(testingArr = ...
)吗?
检查您是否在以后以某种方式更改了testingArr
。使用const
而不是var
啊,我是个傻瓜。在脚本的更深处,我意外地将 testingArr 分配给了异步上下文之外的另一个值。将此标记为已关闭。谢谢大家的时间
这就是为什么您应该创建该数组const
(或let
)以便检测到重复的重新分配...
【参考方案1】:
我不小心将 testingArr 设置为脚本中异步进程之外的另一个值。
【讨论】:
以上是关于Javascript - 数组是对象类型,在声明数组后直接在 .push 处失败的主要内容,如果未能解决你的问题,请参考以下文章