Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何在coffeescript for循环中运行函数_Arrays_For Loop_Coffeescript - Fatal编程技术网

Arrays 如何在coffeescript for循环中运行函数

Arrays 如何在coffeescript for循环中运行函数,arrays,for-loop,coffeescript,Arrays,For Loop,Coffeescript,我写的咖啡剧本是这样的: split_typer_text = typer_text.split '' test = (char) -> setTimeout (-> element.text(element.text() + char)), 100 test char for char in split_typer_text 但coffeescript将其编译为: test = function(char) { return setTimeout((function(

我写的咖啡剧本是这样的:

split_typer_text = typer_text.split ''
test = (char) ->
  setTimeout (-> element.text(element.text() + char)), 100
test char for char in split_typer_text
但coffeescript将其编译为:

test = function(char) {
    return setTimeout((function() {
      return element.text(element.text() + char);
    }), 100);
  };
  _results = [];
  for (_i = 0, _len = split_typer_text.length; _i < _len; _i++) {
    char = split_typer_text[_i];
    _results.push(test(char));
  }
  return _results;
test=函数(char){
返回setTimeout((函数(){
返回element.text(element.text()+char);
}), 100);
};
_结果=[];
对于(\u i=0,\u len=split\u typer\u text.length;\u i<\u len;\u i++){
char=拆分的字体文本[_i];
_结果:push(测试(char));
}
返回结果;
我想要运行函数,不需要数组。
怎么办?

当我编译源代码时,我得到了这个

var char, split_typer_text, test, _i, _len;

split_typer_text = typer_text.split('');

test = function(char) {
  return setTimeout((function() {
    return element.text(element.text() + char);
  }), 100);
};

for (_i = 0, _len = split_typer_text.length; _i < _len; _i++) {
  char = split_typer_text[_i];
  test(char);
}

您正在运行测试功能,就在这里:

_results.push(test(char));
#-------------^^^^^^^^^^
一切都是CoffeeScript中的一个表达式,它包含一个
for
循环。
for
循环的结果是一个数组,因此
\u results
数组和
\u results.push在编译的JavaScript中是一个数组

在某些情况下,CoffeeScript编译器可以保证不会使用
for
循环的值,因此编译时可以优化
\u结果
内容。例如,在此咖啡脚本中:

f = ->
    i for i in [0..11]
    42
for
循环值保证永远不会使用,因此JavaScript中没有数组:

var f;

f = function() {
  var i, _i;

  for (i = _i = 0; _i <= 11; i = ++_i) {
    i;
  }
  return 42;
};
var f;

f = function() {
  var i, _i, _results;

  _results = [];
  for (i = _i = 0; _i <= 11; i = ++_i) {
    _results.push(i);
  }
  return _results;
};
您将看到在JavaScript中填充的数组:

var f;

f = function() {
  var i, _i;

  for (i = _i = 0; _i <= 11; i = ++_i) {
    i;
  }
  return 42;
};
var f;

f = function() {
  var i, _i, _results;

  _results = [];
  for (i = _i = 0; _i <= 11; i = ++_i) {
    _results.push(i);
  }
  return _results;
};
你会得到这个:

var f;

f = function() {
  var i, _i;

  for (i = _i = 0; _i <= 11; i = ++_i) {
    i;
  }
};
varf;
f=函数(){
变量i,_i;

对于(i=\u i=0;\u i我的代码是:->split\u typer\u text=typer\u text.split''测试=(char)->setTimeout(->element.text(element.text()+char)),100测试split_typer_textyes中的字符是-就像你的问题一样。当我用coffeescript编译它时,我得到了我输入答案的输出。你得到了一些不同的东西-我怀疑,因为你的coffeescript是一个旧的或修改过的版本。更新你的coffeescript,你会得到和我一样的结果。
var f;

f = function() {
  var i, _i;

  for (i = _i = 0; _i <= 11; i = ++_i) {
    i;
  }
};