Avatar ·

如何检查一个对象是否为数组(Array)在JavaScript中?

大家好!我刚开始学习JavaScript,遇到了一个令人困惑的情况。我需要检查一个变量是否为数组(Array),但得到的结果很奇怪。 代码如下: ```javascript let arr = [1, 2, 3]; let obj = {name: "John"}; let str = "hello"; console.log(typeof arr); // "object" console.log(typeof obj); // "object" console.log(typeof str); // "string" ``` `typeof` 运算符对数组(Array)和普通对象(Object)都返回 "object"。因此我无法区分数组(Array)和对象(Object)。我尝试通过 `arr instanceof Array` 来检查——似乎有效,但我听说如果数组(Array)是在另一个 frame 或 iframe 中创建的,这个方法可能会失效。 另外,我看到有些人使用 `Array.isArray()`,但我不明白这个方法与其他方法相比有什么优劣。也许还有其他方法? 我需要一个可靠的解决方案,能在任何环境下工作——在浏览器中、在 Node.js 中,并且在处理不同窗口或 frame 时不会出错。