Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Значения аргументов в функциях высшего порядка (https://javascript.ru/forum/misc/59457-znacheniya-argumentov-v-funkciyakh-vysshego-poryadka.html)

kaang 11.11.2015 23:06

Значения аргументов в функциях высшего порядка
 
Здравствуйте!
Возник вопрос по аргументам функции:
function unless(test, then) {
if(!test) then();
}
function repeat(times, body) {
	for(var i = 0; i < times; i++) body(i);
}

repeat(3, function(n) {
	unless(n % 2, function() {
	console.log(n, "is even");
});
// → 0 is even
// → 2 is even

При вызове функция repeat принимает в качестве второго аргумента анонимную функцию, которая в свою очередь, принимает аргумент n, который дальше фигурирует в качестве аргумента функции unless. Помогите пожалуйста разобраться откуда берется значение аргумента n?

рони 11.11.2015 23:15

Цитата:

Сообщение от kaang
Помогите пожалуйста разобраться откуда берется значение аргумента n?

Цитата:

Сообщение от kaang
body(i);

так вот же -- значение i и будет аргументом n

kaang 11.11.2015 23:22

Цитата:

Сообщение от рони (Сообщение 395762)
так вот же -- значение i и будет аргументом n

Невнимательно просмотрел код.
Спасибо большое, Вы очень помогли.

pnpquest 12.11.2015 22:55

Что-то тошнить начинает от этих ваших фвп-фапэ, когда вспоминаешь, как это в нормальных ЯП делается.

unless := method(args := call message arguments; if(doMessage(args at(0)) not, doMessage(args at(1))) )

unless(0 < 1, write(1)) 
unless(0 > 1, write(2)) //  2


Часовой пояс GMT +3, время: 12:02.