Javascript中的名称索引-数组/对象

Name Indexes in Javascript - Array / Object?

本文关键字:数组 对象 索引 Javascript      更新时间:2024-01-31

我知道当在Javascript中使用索引名称来推送值时,它们本质上就像对象一样工作。但我不明白的是以下行为-

person = [];
person[0] = "Someone";
person["test"] = "SomeoneElse"

在控制台上输入person会打印["Someone"],我看不到关于person.test的信息。person.test确实打印SomeoneElse。但是,如果我使用console.log(person),我会得到["Someone", test: "SomeoneElse"]。出于好奇,我试着创建一个像这样的结构——

var experiment = ["Someone1", test1: "SomeoneElse1"]

我得到的是

Uncaught SyntaxError: Unexpected token

我错过了什么?

提前感谢!

在控制台上键入person将打印["Someone"]

Array.prototype.toString格式化此输出,并且它只考虑自身的"数组值",而不考虑其他属性。

然而,如果我去console.log(person),我会得到["Someone", test: "SomeoneElse"]

console.log输出关于对象的其他信息,包括自己的属性。

未捕获的SyntaxError:意外的令牌

因为这是伪造的语法;数组文字语法不允许使用键,因为数组值不应该有键。数组是一个数值索引的值列表。仅仅是因为这些列表是使用对象实现的(因为Javascript中的所有东西都是某种对象),你就可以在数组上设置"非数字键"。但这并不意味着您正确地使用了数组。

另请参阅JavaScript数组元素只不过是数组对象属性吗?

这是因为JavaScript中的数组本身也是一个对象,对象可以具有属性。因此,拥有一个包含元素的数组是完全有效的,但也要在数组对象上设置属性。

第二个示例不起作用,因为[...,...,...]语法专门用于实例化数组及其元素。

在控制台中键入person就像有一个alert(person);或将其值传递给变量或元素,所以更像是想要获得第一组可读值。这就是为什么它会向您显示里面的值,您可以尝试添加person[1] = *something;*,然后它会显示某人,某物

console.log(person)-它显示对象内的所有项。它更像是通知你里面有什么,就像IDE 中的文本可视化工具

var experiment = ["Someone1", test1: "SomeoneElse1"]-它绝对会抛出一个异常——在初始化值时没有这样的格式,至少它期望的是类似var experience=["Someone1", "SomeoneElse1"] 的数组格式