使用coffeescript在同一数组中的对象

时间:2015-04-22 20:34:37

标签: arrays object coffeescript

我在我的gulpfile中使用Coffeescript,我想使用在同一个数组中声明的对象,但它不能正常工作......

# SOURCES
src =
    libs: [
        "#{dir.libs}/jquery/dist/jquery.min.js"
        "#{dir.libs}/gsap/src/uncompressed/TimelineLite.js"
        "#{dir.libs}/gsap/src/uncompressed/easing/EasePack.js"
        "#{dir.libs}/page.js/page.js"
        "#{dir.libs}/swiper/build/js/swiper.js"
    ]
    js: [
        "#{dir.js}/site.js"
        "#{dir.js}/functions.js"
        "#{dir.js}/animations.js"
        "#{dir.js}/init.js"
    ]
    javascript: src.libs + src.js # this.libs + this.js is the same

它正在返回NaN
弄错了?

1 个答案:

答案 0 :(得分:1)

当你说:

javascript: src.libs + src.js

您的src仍然是undefined,因为您正在构建它。您似乎也错误地假设+在(Coffee | Java)脚本中连接数组,但它没有,array + array将字符串化数组,然后连接字符串,所以:

[ 'a' ] + [ 'b' ]

实际上是'ab'

要解决第一个问题,请分两步构建src。要解决第二个问题,请使用Array::concat

src =
    libs: [
        "#{dir.libs}/jquery/dist/jquery.min.js"
        "#{dir.libs}/gsap/src/uncompressed/TimelineLite.js"
        "#{dir.libs}/gsap/src/uncompressed/easing/EasePack.js"
        "#{dir.libs}/page.js/page.js"
        "#{dir.libs}/swiper/build/js/swiper.js"
    ]
    js: [
        "#{dir.js}/site.js"
        "#{dir.js}/functions.js"
        "#{dir.js}/animations.js"
        "#{dir.js}/init.js"
    ]
src.javascript = src.libs.concat(src.js)

或者,如果更有意义,您可以先定义libsjs

libs = [
    "#{dir.libs}/jquery/dist/jquery.min.js"
    "#{dir.libs}/gsap/src/uncompressed/TimelineLite.js"
    "#{dir.libs}/gsap/src/uncompressed/easing/EasePack.js"
    "#{dir.libs}/page.js/page.js"
    "#{dir.libs}/swiper/build/js/swiper.js"
]
js = [
    "#{dir.js}/site.js"
    "#{dir.js}/functions.js"
    "#{dir.js}/animations.js"
    "#{dir.js}/init.js"
]
src =
    libs: libs
    js: js
    javascript: libs.concat(js)