单个变量中的 JavaScript 数组和对象

JavaScript array and object in single variable?

本文关键字:数组 对象 JavaScript 变量 单个      更新时间:2023-09-26

我最近遇到了一些代码,我对此有点困惑。下面是类似的代码,看看:

var x = [];
console.log(x); // prints [] (no surprise)
x[0] = "abc";
console.log(x); // prints ["abc"] (no surprise)
x["test"] = "testing"
console.log(x); // prints ["abc"] 
console.log(x.test); // prints "testing"

所以在这种情况下..相同的变量,x,既是数组又是对象。这怎么可能?如果它同时充当两者,那么console.log(x)应该打印类似 ["abc",test:"testing"] 但该语法是错误的。

那么在这种情况下会发生什么?

所有数组都是对象,(不仅是它们,JavaScript 中的所有内容都是对象(除了原语))

console.log([] instanceof Object);
// true

只是它们是处理整数键的特殊对象。

因此,您可以期望它们像普通的JavaScript对象一样运行。您可以向它们添加任意属性。

关于console.log结果,

[ 'abc', test: 'testing' ]

只是实现给出的表示形式。如果表示形式具有key : value格式,则它是与该数组关联的普通属性。就这样。