В следующем коде от ch 5 of Eloquent Javascript, откуда взялось это значение аргумента n?в этой функции более высокого уровня, откуда взялся аргумент, n?
Почему эта функция возвращает что-нибудь. Наверное, я ненавижу задавать неспецифический, клише вопрос, но я озадачен: как эта функция работает?
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
Вопрос. для i = 1, n% 2 = 1. Преобразует ли это 1 в «истинное» в «тестовую» часть функции «если»? – Goodword
@Goodword Это не так, но javascript имеет огромный диапазон вещей, которые он считает [правдивым или фальшивым] (http://dorey.github.io/JavaScript-Equality-Table/). Как видно из этой таблицы, '0' является ложным и, следовательно, соответствует' if (! Test) '. 'if (foo)' совпадает с 'if (foo == true)'. Чтобы доказать логику, мы можем выполнить итерацию и вычислить сами уравнения: '0% 2 = 0' (falsy-show),' 1% 2 = 1' (правка - не показывать), '2% 2 = 0' (falsy-show). – h2ooooooo