我对 CoffeeScript 很陌生,而且我一直在读这本书。有一个名为Select的部分讨论了使用典型的函数式编程filter
函数。它说你可以这样做:
attacks = (attack for attack in attacks when attack is "a")
目的是过滤掉所有不等于“a”的元素。这工作正常,只要attacks
在同一个文件中声明。但是,如果我attacks
在另一个文件中声明了,就像这样:
attacks = ["a", "b"]
root = exports ? this
root.attacks = attacks
然后第一个代码编译如下:
function() {
var attack, attacks, _i, _len;
...
你会在for
循环中得到一个错误说
TypeError:攻击未定义
我猜这正在发生,因为 CoffeeScript 在它不知道的左侧看到了一些东西,=
并决定需要声明它。
我怎样才能避免这种情况?
其实我已经想出了一种方法。那就是修改第一个片段来说明:
root.attacks = (attack for attack in attacks when attack is "a")
这是一个好的解决方案吗?