前端面试题

刷题累积

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)
根据作用域链这种机制总结出:闭包只能取得包含函数中任何变量的最后一个值


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 请参看我github中的wiki,不定期更新。https://github.com/ivonzhang/Front...
    zhangivon阅读 7,203评论 2 19
  • 本篇收录了一些面试中经常会遇到的经典面试题以及自己面试过程中遇到的一些问题,并且都给出了我在网上收集的答案。马上就...
    菲菲菲菲妞阅读 953评论 0 3
  • 常见试题 行内元素:会在水平方向排列,不能包含块级元素,设置width无效,height无效(可以设置line-h...
    他大舅啊阅读 2,504评论 1 5
  • 面试题一:https://github.com/jimuyouyou/node-interview-questio...
    R_X阅读 1,653评论 0 5
  • HTML HTML5标签 媒体查询head部分写法 Doctype作用? 严格模式与混杂模式如何区分?它们有何意义...
    Mayo_阅读 673评论 0 8