Вам нужно закрыть значение цикла, если вы хотите генерировать функции для запуска позже.Вот для чего кофе предоставляет ключевое слово do
.
for food in foods
do (food) ->
Person.eat ->
console.log food
См. Этот пример: https://gist.github.com/c8329fdec424de9c57ca
Это происходит потому, что ваше тело цикла имеет ссылку на переменную food
, которая изменяетсязначения каждый раз, когда выполняется цикл, и когда вы выполняете функцию if, находит замыкание, в котором была создана функция, и находит переменную food, установленную на последнее значение массива.Использование другой функции для создания новой области решает проблему.