私はJavascriptで可変スコープを理解しようとしています。ここで私はやっているものです:javascript:ブロック内の変数をローカライズ
<script>
for (var i = 0; i < 3; i++) {
document.getElementById(i).onclick = function() {
console.log(i);
}
}
</script>
出力は常に3である、と私はi
は、参照によって保持されているので、それはです理解しています。 i
をどのようにローカライズすれば増分値を記録できるのですか?
ありがとうございます!迅速でまともな応答のための
更新
みんなありがとう。ソリューションは確かに助けになります!
<script>
for (var i = 1; i <= 3; i++) {
document.getElementById(i).onclick = function() {
console.log(logCall(i));
}
}
function logCall(i) {
return i;
}
</script>
をしかし、それはローカライズされていないi
のようになります。
当初、私はここにある、@GrailsGuyと同様のアプローチをしようとしていました。理由を理解できません!
それはonclickのイベントとは何かを持っていますか?ユーザーが一度だけクリックすると、どのようにオンクリックをループすることができますか?そして、あなたはlogCall()関数が必要ですか? console.log(i)と同じではないでしょうか? – oobie11
編集に関しては、最初の例と同じ問題です。イベントハンドラ内で 'console.log(i)'または 'superlongandconfusingfunctionname(i)'を持っているかどうかは違いはありません。ループ終了後に 'i'にアクセスしようとしています。 –