Ответ 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)
Просмотрите скомпилированную версию здесь
do
также может использоваться вне циклов для самостоятельных исполняемых функций.
#coffeescript
do ->
foo = 'bar'
// javascript
(function() {
var foo;
return foo = bar;
})();