1

我有以下 Coffeescript 代码:

for name, data of statistics
    row = document.createElement 'tr'
    row.onclick = ->
        alert name

但是,当我编译并运行它(在大型网页的上下文中)时,它会提醒相同的名称,无论我单击哪一行。它似乎在记住变量,就好像它是常数一样。

我究竟做错了什么?

编辑:

我发现了这个问题,但我不确定如何解决它:Javascript/Coffeescript 在循环结束之前不会评估“名称”变量。

4

1 回答 1

1

您定义的函数(并分配给该行的 onclick 属性)都可以访问该函数(名称)之外的相同变量。在循环结束时, name 有一个值(循环中的最后一项,正如您所提到的),因此每个 onclick 函数都会提醒该值。

您可以通过将“名称”绑定到一个不变的值来解决此问题。这个问题提供了一种解决方案。这个问题有一些有用的背景值得一读。

于 2013-02-22T02:12:20.990 回答