Avatar ·

如何正确检查变量是否为数组(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中运行,并且未来不会出问题的代码。感谢提供带解释的示例。