Coffee循环的替代语法

时间:2015-01-23 21:30:23

标签: coffeescript

我有这个用CoffeeScript编写的函数,我觉得应该写得更好:

addCSS = (files) ->
  i = files.length - 1

  while i >= 0
    $("<link/>",
        rel: "stylesheet"
        href: files[i]
    ).appendTo $("head")
    i--
  return

files arg只是一个文件路径数组。

在CoffeeScript中有更简洁/更清晰的方法吗?

1 个答案:

答案 0 :(得分:1)

一个简单的

addCSS = (files) ->
  for file in files
    $("<link/>",
        rel: "stylesheet"
        href: file
    ).appendTo $("head")

(也不需要返回,虽然它确实可以防止咖啡返回一堆东西)

如果您想知道,由于JS使用for ... in循环的可怕行为,它被编译为

for (_i = 0, _len = files.length; _i < _len; _i++) {
    file = files[_i];
    // ...
}

修改

我刚才意识到你正在反转数组,所以它将是

for file in files by -1

(自1.5.0起支持)

编译为for (_i = files.length - 1; _i >= 0; _i += -1) {