为什么 CoffeeScript 为我的循环创建一个意想不到的数组



My CoffeeScript code:

myloop = () ->
  size = parseInt $('#size').val
  $('#result').css 'text-align', 'center'
  for i in [1..size] by 1
    for j in [1..i] by 1
      $('#result').append "<img src='alpha.jpg' />"
    $('#result').append "<br />"

编译成Javascript:

// Generated by CoffeeScript 1.6.3
(function() {
  var myloop;
  myloop = function() {
    var i, j, size, _i, _j, _results;
    size = parseInt($('#size').val);
    $('#result').css('text-align', 'center')
    _results = [];
    for (i = _i = 1; _i <= size; i = _i += 1) {
      for (j = _j = 1; _j <= i; j = _j += 1) {
        $('#result').append("<img src='alpha.jpg' />");
      }
      _results.push($('#result').append("<br />"));
    }
    return _results;
  };
}).call(this);

正如我所期望的那样,不应生成_result

它应该$('#result').append("<br />")

我该如何解决这个问题?谢谢。

查看文档:

有时,函数以循环结束,这些循环仅用于其副作用。请注意,在这些情况下,不要意外返回理解的结果,方法是在函数底部添加一个有意义的返回值(如 true)或null

要"修复"代码,只需在函数末尾添加一个 return 语句。

最新更新