Вход

Просмотр полной версии : Значения аргументов в функциях высшего порядка


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
Помогите пожалуйста разобраться откуда берется значение аргумента n?
body(i);
так вот же -- значение i и будет аргументом n

kaang
11.11.2015, 23:22
так вот же -- значение 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