2016-11-17 3 views
-3

последовательность (пуск, шаг)последовательности Javascript с множеством вызовов функций

Эта функция принимает два цифровых входа, запуска и остановки, и возвращает функцию без каких-либо входов. Полученная функция будет генерировать последовательность значений, начиная с начала и смещения на шаг. Каждый вызов функции генерирует следующее значение в последовательности. Примеры

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

Комментарий очистить время :) Все это сейчас не имеет значения. Пожалуйста, удалите свои собственные комментарии –

Смежные вопросы