0

我正在尝试理解以下 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>

我对这条线有点困惑

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

正如我猜测的那样,它是一个关联数组,具有键-> 值关系,最终结果不应该像这样打印吗?

fname:"John",lname:"Doe",age:25

? 非常感谢

4

3 回答 3

4

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

该行:

txt = txt + person[x];

简单地读取person对象的每个属性并连接txt变量中的值给出结果:

JohnDoe25

仅供参考,始终for-in对对象使用循环,for对数组使用普通循环。

于 2012-06-09T09:45:14.100 回答
3

如前所述,javascript 没有关联数组的概念,与正常的运行和测试方法相比,最好阅读一些关于 js 的内容,因为在我们学会以 js 的方式思考之前,有些行为在逻辑上是不正确的。

for for..in 循环检查此https://developer.mozilla.org/en/JavaScript/Reference/Statements/for...in并阅读该hasOwnProperty部分。这让很多人感到困惑。

我建议您阅读http://eloquentjavascript.net/并在遇到任何问题时继续检查 MDN。那里的文档真的很好。

于 2012-06-09T09:50:14.117 回答
1

首先person不是arrayobject

其次for(x in person),这里xkey因此person[x]将给出值。

现在在线txt = txt + person[x]你只是连接字符串(值而不是键),所以 txt将只包含所有values

被上一个答案打败了大约 10 秒 :)

于 2012-06-09T09:46:43.383 回答