相关疑难解决方法(0)

循环内的JavaScript闭包 - 简单实用的例子

var funcs = [];
// let's create 3 functions
for (var i = 0; i < 3; i++) {
  // and store them in funcs
  funcs[i] = function() {
    // each should log its value.
    console.log("My value: " + i);
  };
}
for (var j = 0; j < 3; j++) {
  // and now let's run each one to see
  funcs[j]();
}
Run Code Online (Sandbox Code Playgroud)

它输出这个:

我的价值:3
我的价值:3
我的价值:3

而我希望它输出:

我的价值:0
我的价值:1
我的价值:2


使用事件侦听器导致运行函数的延迟时,会出现同样的问题:

var buttons = document.getElementsByTagName("button");
// let's create 3 …
Run Code Online (Sandbox Code Playgroud)

javascript closures loops

2689
推荐指数
25
解决办法
34万
查看次数

带参数的Javascript事件处理程序

我想创建一个传递事件和一些参数的eventHandler.问题是函数没有得到元素.这是一个例子:

doClick = function(func){
    var elem = .. // the element where it is all about
    elem.onclick = function(e){
        func(e, elem);
    }
}
doClick(function(e, element){
    // do stuff with element and the event
});
Run Code Online (Sandbox Code Playgroud)

'elem'必须在匿名函数之外定义.如何在匿名函数中获取传递的元素?有没有办法做到这一点?

那么addEventListener呢?我似乎无法通过addEventListener传递事件吗?

更新

我好像用'这个'解决了这个问题

doClick = function(func){
    var that = this;
    this.element.onclick = function(e){
        func(e, that);
    }
}
Run Code Online (Sandbox Code Playgroud)

这包含我可以在函数中访问的this.element.

addEventListener

但我想知道addEventListener:

function doClick(elem, func){
    element.addEventListener('click', func(event, elem), false);
}
Run Code Online (Sandbox Code Playgroud)

javascript events event-handling handler

74
推荐指数
3
解决办法
14万
查看次数

JavaScript变量如何工作?

我知道JavaScript变量指向一个值:

var foo = true;
//... later 
foo = false;
Run Code Online (Sandbox Code Playgroud)

所以在那个例子中我改变了foo指向true- > foo指向false,但如果我这样做:

for (var i=0; i<100; i++){
    var someVar = i;
}
Run Code Online (Sandbox Code Playgroud)

我是否为每次迭代创建了一个新的var?

以下两种方法有什么不同吗?

var myvar;
for (var i=0; i<100; i++){
    myvar = i;
}
Run Code Online (Sandbox Code Playgroud)

for (var i=0; i<100; i++){
    var myvar = i;
}
Run Code Online (Sandbox Code Playgroud)

如果是这样,为什么?

javascript variables scope var

13
推荐指数
2
解决办法
1694
查看次数

标签 统计

javascript ×3

closures ×1

event-handling ×1

events ×1

handler ×1

loops ×1

scope ×1

var ×1

variables ×1