javascript中的for in-loop

javascript中的for in-loop,javascript,Javascript,我试图理解下面的javascript代码片段 <!DOCTYPE html> <html> <body> <p>Click the button to loop through the properties of an object named "person".</p> <button onclick="myFunction()">Try it</button> <p id="demo"></

我试图理解下面的javascript代码片段

<!DOCTYPE html>
<html>
<body>
<p>Click the button to loop through the properties of an object named "person".</p>
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>

<script type="text/javascript">
function myFunction()
{
var x;
var txt="";
var person={fname:"John",lname:"Doe",age:25}; 

for (x in person)
{
txt=txt + person[x];
}

document.getElementById("demo").innerHTML=txt;
}
</script>
</body>
</html>
正如我猜测的,它是一个关联数组,具有键-->值关系,最终结果是它不应该这样打印吗

fname:"John",lname:"Doe",age:25
?? 非常感谢

首先,JavaScript中没有关联数组的概念,
person
是一个对象,对象使用
for in
循环进行迭代

该行:

txt = txt + person[x];
只需读取
person
对象的每个属性,并将
txt
变量中的值串联起来,即可得到以下结果:

JohnDoe25


仅供参考,始终使用
作为对象的in
循环,使用普通
作为数组的
循环。

首先
不是数组它是对象

其次,
for(x个人)
这里
x
,因此
person[x]
将给出值

现在在第
txt=txt+person[x]
行中,您只是连接字符串(值而不是键),因此
txt
将只包含所有

被前一个答案击败了大约10秒:)

如前所述, javascript没有关联数组的概念,因此最好阅读一些关于js的内容,而不是普通的运行和测试方法,因为有些行为在逻辑上是不正确的,直到我们学会用js的方式思考

对于for..in循环,请检查此项并阅读
hasOwnProperty
部分。这让很多人感到困惑


我建议您阅读并在有任何问题时继续检查MDN。那里的文档非常好。

什么是
person[x]
?对于
x=“fname”
我们有
person[x]=“John”
。结果是
“John”+“Doe”+“25”=“JohnDoe25”
。想想看。:)可能会帮助您玩:`>var txt=“”;>var person={fname:“John”,lname:“Doe”,年龄:25};>对于(x个人){txt=txt+person[x];}>x`10秒或2分钟?;-)嗯,我已经准备好回复了,然后收到了一个警告,另一个答案贴了出来:)所以我花了更多的时间,从容地贴了出来:)
JohnDoe25