1
「Doug Crockford:JavaScript:The Good Parts」提出的以下函數。效果很好。Javascript函數的顯然是相互矛盾的行爲
var fibonacci = function() {
var memo = [0, 1];
var fib = function (c) {
console.debug(memo, c, memo[c]);
result = memo[c];
if (typeof result !== 'number'){
result = fib(c - 1) + fib(c - 2);
memo[c] = result;
}
return result;
};
return fib;
}();
console.log(fibonacci(3));
但是讓我們詳細看看會發生什麼行4
console.debug(memo, c, memo[c]);
出現下面的結果是相反的是什麼可以預期。
memo, c, memo[c]
[0, 1, 1, 2] 3 undefined //contradictory behavior because I expect to have memo = [0, 1]
[0, 1, 1, 2] 2 undefined //contradictory behavior
[0, 1, 1, 2] 1 1
[0, 1, 1, 2] 0 0
[0, 1, 1, 2] 1 1
2
有些想法?
+1在Chrome中可靠地記錄對象的唯一方法是記錄它們的克隆...... – pimvdb