Дрис правильный.Чтобы расширить его ответ: Вы можете использовать JavaScript-идиому
function generateGuid() { ... }
, которая позволяет вам вызывать generateGuid
из любой точки его области действия (даже до ее определения).CoffeeScript не делает этого;вместо этого он компилируется в
var generateGuid = function() { ... }
Для этого есть несколько причин, но суть в том, что функции подчиняются тем же правилам области видимости, что и все другие переменные.Перед присвоением значения generateGuid
, generateGuid()
является попыткой вызова undefined
.
Обратите внимание, что из-за того, как асинхронные обратные вызовы работают в JavaScript, это будет работать:
setTimeout (->
g = generateGuid
# ...codecodecode...
), 0
generateGuid = -> ...