Coffeescript中的数组初始化

时间:2014-11-28 17:02:08

标签: javascript coffeescript

我只是想知道在数组初始化中如此丰富的for循环是什么原因。例如这段代码:

count = (0 for [0..@size])

给出:

 return count = (function() {
   var _i, _ref, _results;
  _results = [];
    for (_i = 0, _ref = this.size; 0 <= _ref ? _i <= _ref : _i >= _ref; 0 <= _ref ? _i++ : _i--) {
      _results.push(0);
    }
    return _results;
  }).call(this);

为什么Coffeescript使用如此冗余的代码而不是:

for (var i = 0; i < this.size; i++) {
   _results[i] = 0;
}

1 个答案:

答案 0 :(得分:1)

在单次使用中看起来可能是多余的,但通常以构建方式来考虑所有可能的场景并使生成的代码尽可能安全。我可以看到该代码解决了至少三个问题(不确定如何正确调用这些问题):

  1. 变量名称冲突
  2. 可变范围冲突
  3. 后向循环支持(当大小<0时)
  4. 你可以读一下there