首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >获取Coffeescript以在FOR循环中创建局部变量

获取Coffeescript以在FOR循环中创建局部变量
EN

Stack Overflow用户
提问于 2012-07-25 07:01:08
回答 1查看 3.1K关注 0票数 19

如何将dealViewItem放入FOR循环的作用域?目前,dealViewItem的作用域在它之外,我的所有事件侦听器都被添加到最后一个dealViewItem中。

代码语言:javascript
复制
  for deal in dealArray
        dealViewItem = dealViewFactory.DealDetail(deal)
        dealViewItem.addEventListener 'click', ->
          dealCart.push(deal.dealId)
          dealViewItem.setAddedToCart()
          btnTakeDeals.setEnabled = true
        dealHolder.add(dealViewItem)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-25 07:06:23

这就是do关键字的用途。它将立即运行一个函数,任何与其中一个参数同名的局部变量都将被传递给它,以确保适当的闭包作用域。

代码语言:javascript
复制
for deal in dealArray
  do (deal) ->
    dealViewItem = dealViewFactory.DealDetail(deal)
    dealViewItem.addEventListener 'click', ->
      dealCart.push(deal.dealId)
      dealViewItem.setAddedToCart()
      btnTakeDeals.setEnabled = true
    dealHolder.add(dealViewItem)

查看compiled version here

对于自动执行的函数,do也可以在循环之外使用。

代码语言:javascript
复制
#coffeescript
do ->
  foo = 'bar'

// javascript
(function() {
  var foo;
  return foo = bar;
})();
票数 36
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11640529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档