【问题标题】:Getting Coffeescript to create a local variable in a FOR loop让 Coffeescript 在 FOR 循环中创建局部变量
【发布时间】:2012-07-23 08:11:46
【问题描述】:

我怎样才能让dealViewItem 进入 FOR 循环的范围?目前,dealViewItem 的范围在它之外,我所有的事件侦听器都添加到最后一个 dealViewItem 中。

  for deal in dealArray
        dealViewItem = dealViewFactory.DealDetail(deal)
        dealViewItem.addEventListener 'click', ->
          dealCart.push(deal.dealId)
          dealViewItem.setAddedToCart()
          btnTakeDeals.setEnabled = true
        dealHolder.add(dealViewItem)

【问题讨论】:

标签: coffeescript


【解决方案1】:

这就是do 关键字的用途。它将立即运行一个函数,并且任何与参数之一同名的局部变量都将被传递给它,从而确保正确的闭包范围。

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 也可以在循环之外用于自执行函数。

#coffeescript
do ->
  foo = 'bar'

// javascript
(function() {
  var foo;
  return foo = bar;
})();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-02
    • 1970-01-01
    • 2014-08-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-20
    相关资源
    最近更新 更多