前段时间我发布了一个问题,关于一个好的 javascript 编码器应该能够回答哪些问题。Meder 指出了以下问题:
由于“i”在 onclick 函数中作为引用而不是作为值保存,因此以下代码会单击任何“a”元素到 alert(-1):
<a href="#">text</a><br><a href="#">link</a>
<script>
var as = document.getElementsByTagName('a');
for ( var i = as.length; i--; ) {
as[i].onclick = function() {
alert(i);
return false;
}
}
</script>
问题是:如何修复这个实现,以便 onclick 函数保存 i 的值而不是它的引用?
我不知道答案。如何解决?如何使 i 成为参考值的副本而不是实际参考?
附带问题:是否所有变量类型都作为引用传入?或者它是基本类型还是对象?
任何想法将不胜感激。