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..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)ここxにあるkeyためperson[x]、値が得られます。

これで、txt = txt + person[x]文字列(キーではなく値)を連結しているだけなので txt、すべてのvalues

前の回答に約10秒打ち負かされました:)

于 2012-06-09T09:46:43.383 に答える