令我惊讶的是,这段代码实际上在node.js中可以运行:
var arr = new Array();
// also works: var arr = [];
arr[0] = 123;
arr['abc'] = 456;
arr; // node.js: [ 123, abc: 456 ], chrome: [123]
我一直以为数组按顺序存储对象,只能通过整数键访问,就像C++中的std::vector。但是,在这里它的行为类似于map或对象。更令人困惑的是,相同的代码在chrome中按预期工作,返回一个仅有一个条目123的数组。我认为node.js和chrome javascript使用相同的内部引擎V8。这里到底发生了什么?
456
,但arr.abc
仍将是456
。除非您明确访问变量或console.log(arr)
,否则它不会在控制台中显示。console.log(arr)
将记录:[123, abc: 456]
。基本上,这只是一个外观问题。 - Cerbrusabc
下,那么这并不是真正的哈希映射。只是一个键/值数组。 - Alex W