如何检查一个对象是否为数组(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 时不会出错。