Javascript 对于循环中?

Javascript 对于循环中?,javascript,for-loop,for-in-loop,Javascript,For Loop,For In Loop,我在这里失去了它。。我现在非常困惑这个循环是如何工作的 来自w3学校: var person={fname:"John",lname:"Doe",age:25}; for (x in person) { document.write(person[x] + " "); } 人是具有属性的对象,对吗?如何使用括号访问这些属性?我以为那是为了阵列 为什么这也起作用,难道不应该只是这样吗 var person=[]; person["fname"] = "John"; person["lnam

我在这里失去了它。。我现在非常困惑这个循环是如何工作的

来自w3学校:

var person={fname:"John",lname:"Doe",age:25}; 

for (x in person)
{
document.write(person[x] + " ");
}
人是具有属性的对象,对吗?如何使用括号访问这些属性?我以为那是为了阵列

为什么这也起作用,难道不应该只是这样吗

var person=[]; 
person["fname"] = "John";
person["lname"] = "Doe";
person["age"] = "25";


for (x in person)
{
document.write(person[x] + " ");
}

JavaScript对象属性可以通过object[key]和object.key访问(很可能还有其他方式)。就是他们工作的方式


第二个例子是,数组是一个特殊的对象,但仍然是一个对象。

可以使用object[key]和object.key访问JavaScript对象属性(很可能还有其他方法)。就是他们工作的方式


第二个示例,数组是一个特殊的对象,但仍然是一个对象。

在js中,对象是关联数组,这意味着它们只是键值对的集合。
如果你对刹车感到困惑,别担心!可以通过“.”或“[]”结构访问Javascript对象属性:

var a = {key : 'val'};
alert(a['key'] === a.key);
在大多数情况下,它们的工作原理相同。
这只是一个偏好和浏览器实现的问题(例如:firefox使用括号时运行得更快,而chrome使用圆点时运行得更快)。
有些情况下,点构造将失败:假设您有一个具有名为“some key”属性的对象。
如果您想使用点符号访问它:
object.some key
,您肯定会得到一个错误,因为代码被解释为两个值之间的差异:
object.some-key
。在这种情况下,您应该使用括号:
object['some-key']


还有其他情况,其中键包含特殊字符,例如
\
*
…等已经有javascript解释的代码

在js中,对象是关联数组,这意味着它们只是键值对的集合。
如果你对刹车感到困惑,别担心!可以通过“.”或“[]”结构访问Javascript对象属性:

var a = {key : 'val'};
alert(a['key'] === a.key);
在大多数情况下,它们的工作原理相同。
这只是一个偏好和浏览器实现的问题(例如:firefox使用括号时运行得更快,而chrome使用圆点时运行得更快)。
有些情况下,点构造将失败:假设您有一个具有名为“some key”属性的对象。
如果您想使用点符号访问它:
object.some key
,您肯定会得到一个错误,因为代码被解释为两个值之间的差异:
object.some-key
。在这种情况下,您应该使用括号:
object['some-key']

还有其他情况,其中键包含特殊字符,例如
\
*
…等已经有javascript解释的代码

“对象的属性可以通过两种方式访问,即点表示法或方括号表示法。”


“通过点符号或方括号符号,可以通过两种方式访问对象的属性。”

有两种方式可以访问对象的属性:

  • obj.键
  • obj['key']
第二种方法的优点是,您还可以动态提供密钥,例如示例中的
obj[x]
obj.x
的字面意思是
x
属性(即
obj['x']
),这不是您想要的


数组仅使用括号,但括号不限于数组。数组也在引擎盖下,但设计用于数字键。您仍然可以添加带有非数字键的属性,但这不是它们的设计目的。

有两种方法可以访问对象的属性:

  • obj.键
  • obj['key']
第二种方法的优点是,您还可以动态提供密钥,例如示例中的
obj[x]
obj.x
的字面意思是
x
属性(即
obj['x']
),这不是您想要的


数组仅使用括号,但括号不限于数组。数组也在引擎盖下,但设计用于数字键。您仍然可以添加带有非数字键的属性,但这不是它们的设计目的。

您可以使用JavaScript中的括号运算符访问对象文本和数组。对于对象,方括号运算符通过将方括号中的值转换为字符串(如果不是字符串)并检查它是否确实是属性()来访问对象的成员

第二个示例建议使用JavaScript()中不鼓励使用的“关联数组”

回答您的问题:编写
Map
类结构的标准方法(imo)是使用for-in循环进行迭代,即对象文本(Object literal);编写更传统数组的标准方法是
数组
对象

var map = { "a": "string" , "b": 0 , "c": null } ;

    for(key in map) console.log("(!!) map # " + key + " : " + map[key] ) ;

var list = ["string",0,null] ;

    for(i = 0 ; i < list.length ; i++) console.log("(!!) list # " + i " : " + list[i] ) ;
var-map={“a”:“string”,“b”:0,“c”:null};
对于(输入映射)控制台.log(“(!!)映射”#“+key+”:“+map[key]);
变量列表=[“字符串”,0,空];
对于(i=0;i
您可以使用JavaScript中的方括号操作符访问对象文本和数组。对于对象,方括号运算符通过将方括号中的值转换为字符串(如果不是字符串)并检查它是否确实是属性()来访问对象的成员

第二个示例建议使用JavaScript()中不鼓励使用的“关联数组”

回答您的问题:编写类似
映射的结构的标准方法(imo)——即对象