【发布时间】:2011-03-21 14:16:42
【问题描述】:
有两个版本,据说当用户点击第一个链接时会提示“1”,第二个链接会提示“2”等:
版本 1:
<a href="#" id="link1">click me</a>
<a href="#" id="link2">click me</a>
<a href="#" id="link3">click me</a>
<a href="#" id="link4">click me</a>
<a href="#" id="link5">click me</a>
<script type="text/javascript">
for (i = 1; i <= 5; i++) {
document.getElementById('link' + i).onclick = (function() {
return function() {
var n = i;
alert(n);
return false;
}
})();
}
</script>
版本 2:
<a href="#" id="link1">click me</a>
<a href="#" id="link2">click me</a>
<a href="#" id="link3">click me</a>
<a href="#" id="link4">click me</a>
<a href="#" id="link5">click me</a>
<script type="text/javascript">
for (i = 1; i <= 5; i++) {
document.getElementById('link' + i).onclick = (function() {
var n = i;
return function() {
alert(n);
return false;
}
})();
}
</script>
版本 1 将不起作用。版本 2 将。我想我知道原因,但想与其他人的解释比较一下为什么版本 1 不起作用。
【问题讨论】:
标签: javascript scope closures