用于以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"></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 

? 非常感谢

+0

什么是“人物[x]”?对于'x =“fname”'我们有'person [x] =“John”'。结果是“John”+“Doe”+“25”=“JohnDoe25”'。想想看。 :) – freakish

+0

可以帮你玩弄:[jsconsole](http://jsconsole.com/) ' > var txt =“”; > var person = {fname:“John”,lname:“Doe”,年龄:25}; > for(x in person){txt = txt + person [x]; } > x ' –

首先,没有在JavaScript副阵列的理念,person是对象和对象正在使用的for-in循环迭代。

线:

txt = txt + person[x]; 

简单地读出person对象的每个属性而在txt变量串接的值给出结果:

JohnDoe25 

FYI,始终使用for-in环为对象而正常for循环为数组。

首先person不是array它的object

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

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

了由以前的答案殴打生根粉10秒:)

+1

10秒钟或2分钟?;-) – Sarfraz

+0

好吧,我准备回复它,然后来了一个警报另一个答案张贴:)所以花了一些时间和张贴悠闲:) – Rishabh

至于说, javascript没有关联数组的概念,最好是做一些关于js的阅读,而不是正常的运行和测试方法,因为有些行为在逻辑上不正确,直到我们学会思考js的方式。

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

我建议你阅读http://eloquentjavascript.net/并且每当有任何问题时请继续检查MDN。那里的文档真的很好。