javascript函数作为数组

时间:2015-07-14 08:55:29

标签: javascript arrays function arguments

    // 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

1 个答案:

答案 0 :(得分:0)

函数仍然是一个对象,因此您可以为该对象分配属性。基本上你将'n'设置为阶乘的属性,这样你就不必每次都重新计算它。 'in'运算符函数从此流出,大致(但不完全)等效于此示例中的factorial.hasOwnProperty(n)。 所以从技术上讲,你使用阶乘函数作为一个数字作为键的映射,它看起来类似于数组。