前端面试题
2019-05-10 本文已影响0人
尼禄祭
刷题累积
1.以下代码运行结果是?
<html>
<body>
<button id="button1">Button1</button>
<button id="button2">Button2</button>
<button id="button3">Button3</button>
<script>
function buttonInit(){
for(var i=1;i<4;i++){
var b=document.getElementById("button"+i);
b.addEventListener("click",function(){ alert("Button"+i);},false);
}
}
window.onload=buttonInit;
</script>
</body>
</html>
点击每个button都会弹出“button4”
解答:
1.function中的function 称为闭包(有权访问另一个函数作用域中变量的函数)
2.闭包(每个点击函数)的作用域链中都指向着包含函数(buttonInit)的活动对象(i)
根据作用域链这种机制总结出:闭包只能取得包含函数中任何变量的最后一个值