我有以下Coffeescript代码:
for name, data of statistics
row = document.createElement 'tr'
row.onclick = ->
alert name
但是,当我编译并运行它(在大型网页的上下文中)时,无论我点击哪一行,它都会提醒相同的名称。它似乎记住了变量,好像它是不变的。
我做错了什么?
编辑:
我发现了这个问题,但我不确定如何修复它:Javascript / Coffeescript在达到循环结束之前不评估'name'变量。
答案 0 :(得分:1)
您定义的函数(以及分配给行的onclick属性)都可以访问该函数(name)之外的相同变量。在循环结束时,name有一个值(循环中的最后一项,如你所提到的),因此每个onclick函数都会提醒该值。
您可以通过将“name”绑定到不会更改的值来解决此问题。 This question提出了一个解决方案。 This question有一些值得阅读的有用背景。