在 JavaScript 中循环

for in loop in javascript

本文关键字:循环 JavaScript      更新时间:2023-09-26

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

?非常感谢

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

该行:

txt = txt + person[x];

只需读取 person 对象的每个属性,并将 txt 变量中的值连接起来,得到结果:

JohnDoe25

仅供参考,始终对对象使用for-in循环,对数组使用正常的for循环。

如前所述,JavaScript 没有关联数组的概念,最好阅读一些关于 JS 的阅读,而不是正常的运行和测试方法,因为有些行为在逻辑上是不正确的,直到我们学会以 JS 的方式思考。

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

我建议您阅读 http://eloquentjavascript.net/,每当有任何问题时,请继续检查MDN。 那里的文档非常好。

首先,person不是array而是object

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

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

被之前的答案打败了 abt 10 秒:)