我試着去理解在Javascript中的變量範圍。下面是我在做什麼:的javascript:變量局部塊
<script>
for (var i = 0; i < 3; i++) {
document.getElementById(i).onclick = function() {
console.log(i);
}
}
</script>
的輸出總是3,我的理解是因爲i
一直保留引用。如何本地化i
,以便記錄遞增的值?
謝謝!
更新
謝謝你們快速和體面的反應。解決方案確實有幫助!
起初,我想類似的方法來@GrailsGuy,那就是:
<script>
for (var i = 1; i <= 3; i++) {
document.getElementById(i).onclick = function() {
console.log(logCall(i));
}
}
function logCall(i) {
return i;
}
</script>
但它看起來像i
沒有被本地化。無法弄清楚爲什麼!
它有什麼做的onclick事件?如果用戶只點擊一次,它如何通過onclick循環?你需要logCall()函數嗎?那不會和console.log(i)一樣嗎? – oobie11
關於你的編輯,它和第一個例子中的問題是一樣的。無論你是否有'的console.log(I)'或'superlongandconfusingfunctionname(我)'的事件處理中不會有所作爲。循環終止後,您正試圖訪問'i'。 –