令我驚訝的是,這個代碼實際工作中的Node.js:node.js數組實際上hashmaps?
var arr = new Array();
// also works: var arr = [];
arr[0] = 123;
arr['abc'] = 456;
arr; // node.js: [ 123, abc: 456 ], chrome: [123]
我一直認爲,一個陣列中存儲其順序的對象,僅通過一個整數鍵訪問,就像一個std ::向量C++。但是,在這裏它就像一張地圖或一個物體。再加上混淆,相同的代碼在chrome中按預期工作,並返回一個帶有單個條目123的數組。我認爲node.js和chrome javascript使用相同的內部引擎V8。這裏發生了什麼?
不,他們實際上是JavaScript數組,其中有一種「對象」! – adeneo
儘管chrome在控制檯中不顯示'456',但arr.abc仍然是'456'。它只是不顯示它在控制檯,除非你明確地訪問變量,或'console.log(arr)',它記錄:'[123,abc:456]'基本上,這只是一個整容問題。 – Cerbrus
如果它存儲在'abc'下面,那不是一個散列圖。只是一個鍵/值數組。 –