我是CoffeeScript的新手,并且一直在阅读这本关于CoffeeScript的小书.以下是本书第2章中的几行,在阅读时让我很困惑:
CoffeeScript公开的唯一低级循环是while循环.这与纯JavaScript中的while循环具有类似的行为,但具有额外的优点,即它返回结果数组,即类似于Array.prototype.map()函数.
num = 6
minstrel = while num -= 1
num + " Brave Sir Robin ran away"
Run Code Online (Sandbox Code Playgroud)
虽然对于一个CoffeeScript程序员来说看起来不错,但作为一个新手,我无法理解代码的作用.而且,单词返回一个结果数组 似乎与以下事实并不一致:while是一个循环结构,而不是一个函数.所以它回归的概念似乎令人困惑.此外,在循环的每次迭代中num带有字符串的变量"Brave Sir Robin ran away"似乎很笨拙,因为该值num 被用作循环计数器.
如果您能够解释代码的行为并且可能会用简单的示例说明作者试图传达的内容,我将非常感激.
哇!我不知道,但如果你记得Coffeescript总是返回"块"的最后一个表达式,那就绝对有意义了.因此,在您的情况下,它返回(不是通过"return"语句,如果这让您感到困惑)表达式
num + " Brave Sir Robin ran away"
Run Code Online (Sandbox Code Playgroud)
从与while条件相关联的块中,当您返回多个这样的表达式时,它会将它们推送到数组中.
看看生成的JavaScript,它可能更清晰,因为生成的代码几乎是程序性的
var minstrel, num;
num = 6;
minstrel = (function() {
var _results;
_results = [];
while (num -= 1) {
_results.push(num + " Brave Sir Robin ran away");
}
return _results;
})();
Run Code Online (Sandbox Code Playgroud)
我希望这对你有意义.
| 归档时间: |
|
| 查看次数: |
7736 次 |
| 最近记录: |