zoukankan      html  css  js  c++  java
  • 面试题经常问的闭包问题

    <!DOCTYPE html>
    <html>
    <head lang="en">

    </head>
    <body>
    <div id="etDiv">
    <ul>
    <li>1</li>
    <li>2</li>
    <li>3</li>
    <li>4</li>
    <li>5</li>
    </ul>
    </div>
    <script>
    window.onload = function(){
    var li = document.getElementsByTagName('li');

    var _len = li.length;
    //一般不考虑闭包用户会这么写,点击任何一个 li 结果都是5 这个是i最终值
         for(var i=0;i<_len;i++){
    li[i].onclick = function(i){
    alert(i)
    }
    }

        //正确写法是给个作用域保存结果值
    for(var i=0;i<_len;i++){
    li[i].onclick = (function(i){
    return function(){
    alert(i)
    }
    })(i)
    }
    }

    </script>
    </body>
    </html>
    ruby前端观察
  • 相关阅读:
    组合模式
    过滤器模式
    桥接模式
    适配器模式
    原型模式
    建造者模式
    抽象工厂
    工厂方法
    静态工厂
    单例模式
  • 原文地址:https://www.cnblogs.com/rubyxie/p/6371029.html
Copyright © 2011-2022 走看看