在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。在「除非」函數的「測試」部分中,它是否轉換爲「真」? – Goodword 2014-10-10 18:06:49
@Goodword它沒有,但JavaScript有一個很大範圍的東西,它認爲[truthy或falsy](http://dorey.github.io/JavaScript-Equality-Table/)。正如你從這張表中看到的,'0'是虛假的,因此匹配'if(!test)'。 'if(foo)'與'if(foo == true)'相同。爲了證明我們可以迭代的邏輯並自己計算這些方程:'0%2 = 0'(falsy - show),'1%2 = 1'(truthy--不顯示),'2%2 = 0' (falsy -show)。 – h2ooooooo 2014-10-10 18:11:05