0
<script type="text/javascript">
function init() {
var pArry = document.getElementsByTagName("p");
for(var i=0; i<pAry.length; i++) {
pArry[i].onclick = function() {
alert(i);
}
}
}
</script>
</head>
<body onload="init();">
<p>test 0</p>
<p>test 1</p>
<p>test2</p>
<p>test3</p>
<p>test4</p>
なぜ結果がすべて5ですか?私は嘘つきが(0,1,2 ....)したいです。
これはまさにi' 'の値を凍結しない - むしろ、これは、それぞれの閉鎖のために(新しい関数スコープ経由)*新しい*' i'を作成します外部の無名関数が適用されたときの(ループからの)現在の「i」の初期値を有する。私は 'i'を再使用しないと、意図をより明確にするかもしれないと思います。 –