繁体   English   中英

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

[英]Name Indexes in Javascript - Array / Object?

我了解到,当索引名用于在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中的数组本身也是对象,并且对象可以具有属性。 因此,拥有一个包含元素的数组是完全有效的,但在该数组对象上设置属性也是如此。

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

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

console.log(person) -它显示对象内的所有项目。 这更像是通知您内部内容,就像您的IDE中的文本可视化工具一样

var experiment = ["Someone1", test1: "SomeoneElse1"] -它将绝对引发异常,在初始化值时没有这样的格式,至少它期望像var ["Someone1", "SomeoneElse1"] = ["Someone1", "SomeoneElse1"]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM