Js模拟块级作用域 - guananddu/gTools GitHub Wiki

//是的,还是这个老掉牙的问题
var addHandlers = function(nodes) {
  for (var i = 0; i < nodes.length; i++) {
    nodes[i].onclick =
      function(e) {alert(i);}
  }
};
//你可以通过在外面包一个函数来解决
var addHandlers = function(nodes) {
  for (var i = 0; i < nodes.length; i++) {
    nodes[i].onclick = function(i) {
      return function(e) {alert(i);};
    }(i);
  }
};
//或者使用'with'来模拟块级作用域
var addHandlers = function(nodes) {
  for (var i = 0; i < nodes.length; i++) {
    with ({i:i}) {
      nodes[i].onclick =
        function(e) {alert(i);}
    }
  }
};
⚠️ **GitHub.com Fallback** ⚠️