Coffeescript 从Cakefile中的任务调用方法
我正在建立一个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
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函数只遵循普通的变量赋值规则