如何正确检查变量是否为数组(Array)?
大家好!我刚开始学习JavaScript,遇到了一个问题。我需要检查一个变量是否为数组,但不确定如何正确操作。
我知道有`typeof`运算符,但它对数组无效——它返回`"object"`。例如:
```javascript
const arr = [1, 2, 3];
console.log(typeof arr); // "object" — 没用!
```
我试过使用`instanceof Array`,但有人告诉我这不可靠,特别是当代码涉及不同框架或窗口(iframes)时。我还看到有人通过`Array.isArray()`来检查,但我不明白这个方法好在哪里。
另外,我注意到在一些旧项目中,人们使用`Object.prototype.toString.call(arr) === '[object Array]'`。这到底是遗留代码还是现代方法?
请告诉我,在2024年哪种方法被认为是正确的?我希望写出既能在浏览器中运行,也能在Node.js中运行,并且未来不会出问题的代码。感谢提供带解释的示例。