[英]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中的数组本身也是对象,并且对象可以具有属性。 因此,拥有一个包含元素的数组是完全有效的,但在该数组对象上设置属性也是如此。
第二个示例不起作用,因为[...,...,...]
语法专门用于实例化数组及其元素。
在控制台中键入人员就像有一个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.