我这里有这个 Coffeescript:
brew = (args...) =>
for e in args
alert e
null
brew('fo', 're', 'eo');
我希望我不需要在那里放置 null 来让它工作,但可惜的是,它编译成这样:
brew = function() {
var args, e, _i, _len, _results;
args = 1 <= arguments.length ? __slice.call(arguments, 0) : [];
_results = [];
for (_i = 0, _len = args.length; _i < _len; _i++) {
e = args[_i];
alert(e);
_results.push(null);
}
return _results;
};
brew('fo', 're', 'eo');
但现在我有 3 行不必要的行:
_results = [];
_results.push(null);
return _results;
有小费吗?
如果您不希望函数返回任何内容,请这样说:
brew = (args...) =>
for e in args
console.log e
return
这样做的一个副作用是for
循环不会填充数组:CoffeeScript 可以保证循环的结果for
不会使用循环表达式,因此不会费心计算它。请记住,CoffeeScript 中的一切都是表达式,函数返回最后一个表达式的值,因此有时您必须显式地输入return
避免浪费时间计算永远不会使用的东西。
CoffeeScript 循环最终如下所示:
for (_i = 0, _len = args.length; _i < _len; _i++) {
e = args[_i];
console.log(e);
}
请注意,明确的“不返回任何内容”return
压制所有的_result
stuff.
你可以自己看看在这里 http://coffeescript.org/#try%3abrew%20=%20%28args...%29%20=%3E%0A%20%20for%20e%20in%20args%0A%20%20%20%20console.log%20e%0A%20%20return%0A%0Abrew%281,%202,%203,%204%29%0A.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)