我无法弄清楚这个递归调用是如何工作的。在递归调用中使用 not 运算符以某种方式使该函数确定给定的参数是奇数还是偶数。当。。。的时候 '!' 被忽略 fn(2) 和 fn(5) 都返回 true。
这个例子取自JavaScript Allonge 免费电子书,到目前为止,这本书非常出色。
var fn = function even(n) {
if (n === 0) {
return true;
}
else return !even(n - 1);
}
fn(2); //=> true
fn(5); //=> false