我试着理解Javascript中的变量范围.这是我在做的事情:
<script>
for (var i = 0; i < 3; i++) {
document.getElementById(i).onclick = function() {
console.log(i);
}
}
</script>
Run Code Online (Sandbox Code Playgroud)
输出总是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>
Run Code Online (Sandbox Code Playgroud)
但它似乎i没有被本地化.想不通为什么!
创建一个新范围
for (var i = 0; i < 3; i++) {
(function(i) {
document.getElementById(i).onclick = function() {
console.log(i);
}
}(i));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
110 次 |
| 最近记录: |