Вы запускаете функцию тестирования, прямо здесь:
_results.push(test(char));
#-------------^^^^^^^^^^
Все это выражение в CoffeeScript и включает цикл for
. Результатом цикла for
является массив, следовательно массив _results
и _results.push
в скомпилированном JavaScript.
В некоторых случаях компилятор CoffeeScript может гарантировать, что значение цикла for
не будет использоваться, поэтому _results
может быть оптимизирован при компиляции. Например, в этом CoffeeScript:
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;
};
Demo.
Однако, в этом случае петля for
является возврат значения функции так необходим массив:
f = ->
i for i in [0..11]
и вы увидите массив заселяется в JavaScript:
var f;
f = function() {
var i, _i, _results;
_results = [];
for (i = _i = 0; _i <= 11; i = ++_i) {
_results.push(i);
}
return _results;
};
Demo.
Если вы уверены, что не хотите тратить время на массив, вы должны сказать CoffeeScript, что массив не будет использоваться, как вы это делаете, зависит от контекста. Например, вы можете добавить пустой return
, чтобы указать, что окружающая функция не возвращает ничего:
f = ->
i for i in [0..11]
return
и вы получите это:
var f;
f = function() {
var i, _i;
for (i = _i = 0; _i <= 11; i = ++_i) {
i;
}
};
Demo.
мой код: -> split_typer_text = typer_text.split '' тест = (символ) -> SetTimeout (-> element.text (element.text() + символ)), 100 тест символ для char в split_typer_text – MarioDu
yes - как есть в вашем вопросе. Когда я компилирую это с помощью coffeescript, я получаю сообщение, которое я вставляю в свой ответ.Вы получаете что-то другое - и я подозреваю, потому что ваш кофейник является старой или измененной версией. обновите свой coffeescript, и вы получите результаты, подобные моим. –