Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在coffeescript循环中捕获异步函数的变量?_Javascript_Loops_Coffeescript - Fatal编程技术网

Javascript 如何在coffeescript循环中捕获异步函数的变量?

Javascript 如何在coffeescript循环中捕获异步函数的变量?,javascript,loops,coffeescript,Javascript,Loops,Coffeescript,我正在一个对象上循环,并尝试为对象中每个项目对应的每个按钮添加一个onclick事件 for id of obj button = $("#my_button"+ id) button.click(-> console.log id) 使用此循环,每个按钮记录循环的最后一个id。如何让每个按钮记录正确的对应id?这是一个典型的JavaScript问题。标准解决方案是将每个循环迭代封装在一个匿名函数中,并将id传递给该函数;这样,传递给单击的函数将看到特定的id实例 C

我正在一个对象上循环,并尝试为对象中每个项目对应的每个按钮添加一个
onclick
事件

for id of obj
    button = $("#my_button"+ id)
    button.click(->  console.log id) 

使用此循环,每个按钮记录循环的最后一个id。如何让每个按钮记录正确的对应id?

这是一个典型的JavaScript问题。标准解决方案是将每个循环迭代封装在一个匿名函数中,并将
id
传递给该函数;这样,传递给
单击的函数将看到特定的
id
实例

CoffeeScript为此提供了一个很好的语法:
do(id)->…
编译为
(函数(id){…})(id)
。那么,作为你的例子,你会写

for id of obj
  do (id) ->
    button = $("#my_button"+ id)
    button.click(->  console.log id)
我在文章中谈到了
do