zoukankan      html  css  js  c++  java
  • js闭包的一点用处

    昨天看知乎,偶尔看到这么一个题目,

    // 要求按“Button 1” 显示 “This is button: 1”,以此类推
    for (var i = 1; i <= 3; i++) {
        document.getElementById("btn" + i).onclick = function() {
            alert("This is button: " + i);
        };
    }

    由于onclick事件是异步的,但是i是一个变量,当这段代码执行完之后,i=4,所以每次执行onclick的时候,调用的都是同一个变量i。

    我的解决办法如下:

    // 要求按“Button 1” 显示 “This is button: 1”,以此类推
    for (var i = 1; i <= 3; i++) {
        document.getElementById("btn" + i).onclick = function(i) {
                return function(){ alert("This is button: " + i);}
        }(i);
    }

    返回一个新的匿名函数,使用的变量就是自己独享的。

  • 相关阅读:
    SNMP简介
    命令模式
    牛顿法
    仿射函数
    schedule
    命令模式
    牛顿法
    schedule
    仿射函数
    适配器模式
  • 原文地址:https://www.cnblogs.com/jiabo/p/5165543.html
Copyright © 2011-2022 走看看