【发布时间】:2012-08-23 18:24:55
【问题描述】:
我在 JavaScript 中有一个变量,我像 hash 一样使用它。我可以像这样初始化它:
var selected = [];
或
var selected = {};
它做同样的事情。例如,我正在使用它:
selected["one"] = 1;
if (selected["one"] == 1) console.log("one is selected");
// result: one is selected
if (selected["two"] != 1) console.log("two is not selected");
// result: two is not selected
selected["one"] = 0;
if (selected["one"] != 1) console.log("one is no longer selected");
// result: one is no longer selected
真的有区别吗?一个是 object 而另一个是 array 吗?如果是这样,我应该什么时候遇到问题。即,两者在用法上有什么区别,为什么要选择一个而不是另一个?
【问题讨论】:
-
发生这种情况是因为 Javascript 中的数组也是对象。因此,您可以像普通对象一样将内容分配给数组对象的插槽。
-
不要将类数组语法与数组混淆。例如,在Javascript中
selected["one"]等价于selected.one(前者支持任意字符串作为键,后者支持字母数字键)。 -
即使这在技术上实际上只是数组和对象差异的重复,对于不知道(或一直忘记){} 是对象而 [] 是数组,这是一个不同的问题。有点像 2 与“二”不同。
标签: javascript