2016-11-17 20 views
-3

序列(开始,步骤)带有一系列函数调用的Javascript序列

该函数接受两个数字输入,start和stop,并返回一个没有输入的函数。结果函数将生成一个以start开始并逐步偏移的值序列。每个函数调用将生成序列中的下一个值。 示例

var x = sequence(3, 15); 
[ x(), x(), x() ] => [ 3, 18, 33 ] 
var y = sequence(28, -5); 
[ y(), y(), y() ] => [ 28, 23, 18 ] 

我该如何解决这个问题?

+0

这是一个提示,调用序列返回一个函数,这个函数需要自己的范围。走得更远将是破坏。 – axelduch

+3

如果你不给它任何尝试,我们只是为你解决问题。如果你展示了你所尝试的,以及错误信息和实际与预期的行为,我们可以确定你做错了什么,你将学到更多东西。 –

回答

1

sequence不会简单地返回一个函数。它返回一个封闭函数,用于跟踪开始/步骤值。所以,开始,步骤和计数器都与之相关。所以你可以和他们一起工作。

function sequence(start, step) { 
 
    var counter = -1; 
 
    return function() { 
 
    // This is the function that will return the next element 
 
    // It uses the counter, start, step variables from its closure 
 
    // Notice they live outside of the inner function so the counter is not reset 
 
    // every time you run this function. 
 
    counter++; 
 
    return start + step * counter; 
 
    }; 
 
}; 
 

 
var x = sequence(1, 3); 
 
var y = sequence(-1, -2); 
 

 
console.log('x()', x(), x(), x()); 
 
console.log('y()', y(), y(), y());

+0

@JLRishe难道你没有得到一个警告,你正在覆盖更高版本? –

+0

评论清理时间:)现在这些都是无关紧要的。请删除你自己的评论 –

相关问题