Coffeescript 从Cakefile中的任务调用方法

Coffeescript 从Cakefile中的任务调用方法,coffeescript,cakefile,Coffeescript,Cakefile,我正在建立一个Cakefile来编译和缩小我的咖啡脚本,缩小我的香草库 我为每个案例创建了不同的任务,不管它是否是咖啡文件,但我想将它们合并到一个任务中 我遇到的问题是从任务中调用一个方法;在某些情况下,我可以毫无问题地调用方法,但在其他情况下,我会收到 TypeError: undefined is not a function 我正在处理的对象看起来像 source = libs: [ 'lib/jquery-1.7.1.min.js' 'lib/backbo

我正在建立一个Cakefile来编译和缩小我的咖啡脚本,缩小我的香草库

我为每个案例创建了不同的任务,不管它是否是咖啡文件,但我想将它们合并到一个任务中

我遇到的问题是从任务中调用一个方法;在某些情况下,我可以毫无问题地调用方法,但在其他情况下,我会收到

    TypeError: undefined is not a function
我正在处理的对象看起来像

source = 
  libs: [
    'lib/jquery-1.7.1.min.js'
    'lib/backbone.js'
    'lib/underscore.js'
  ]
  coffees: [
    'app/800cart.coffee'
    'app/models/coffee/cart.coffee'
    'app/models/coffee/contact.coffee'
  ]
我想这样做,我得到了错误

 task 'build', 'Concat, compile, and minify files', ->
    for fileType, files of source
        concatinate files

    concatinate = (files) ->
      console.log 'concatinating'
我真正感到困惑的是,如果我用一个运行良好的条件调用该方法

 task 'build', 'Concat, compile, and minify files', ->
    for fileType, files of source
        concatinate files if fileType is 'coffees'

    concatinate = (files) ->
      console.log 'concatinating'

我在这里做错了什么?

问题是,在用concatatite=行定义concatatite之前,您试图调用concatatite。只需将声明向上移动,或者更好地将其移动到任务定义之外

您可能已经习惯了JavaScript的函数concatate语法,它会自动将函数移动到作用域的顶部。CoffeeScript编译为concatate=函数语法,这主要是因为函数cocatate语法在不同的JS运行时表现不一致,特别是IE。因此,CoffeeScript函数只遵循普通的变量赋值规则