// Compute factorials and cache results as properties of the function itself.
function factorial(n) {
if (isFinite(n) && n>0 && n==Math.round(n)) { // Finite, positive ints only
if (!(n in factorial)) // If no cached result
factorial[n] = n * factorial(n-1); // Compute and cache it
return factorial[n]; // Return the cached result
}
else return NaN; // If input was bad
}
factorial[1] = 1; // Initialize the cache to hold this base case.
此代码来自书籍JavaScript: The Definitive Guide, 6th Edition
我有以下问题:
1)在下面的行中,如何将函数用作数组?
factorial[n] = n * factorial(n-1); // Compute and cache
2)我们如何使用in
运算符作为函数参数,如下图所示?
if (!(n in factorial)) // If no cached
修改
我知道factorial[1] = 1;
在函数factorial中设置了属性'1':1
。
但是可以设置如下函数的属性吗?
function f() {
a: 2
}
alert(f.a); //get 2 as output
答案 0 :(得分:0)
函数仍然是一个对象,因此您可以为该对象分配属性。基本上你将'n'设置为阶乘的属性,这样你就不必每次都重新计算它。 'in'运算符函数从此流出,大致(但不完全)等效于此示例中的factorial.hasOwnProperty(n)。 所以从技术上讲,你使用阶乘函数作为一个数字作为键的映射,它看起来类似于数组。