javascript函数作为数组

javascript函数作为数组,javascript,arrays,function,arguments,Javascript,Arrays,Function,Arguments,这个代码来自于书中 我有以下问题: 1在下一行中,函数如何用作数组? 阶乘[n]=n*阶乘n-1;//计算与缓存 2我们如何将in运算符用于下一行中的函数参数? 如果n在阶乘中//如果没有缓存 编辑: 我得到阶乘[1]=1;设置函数阶乘中的属性“1”:1 但是,是否可以如下设置函数的属性 // Compute factorials and cache results as properties of the function itself. function factorial

这个代码来自于书中

我有以下问题:

1在下一行中,函数如何用作数组? 阶乘[n]=n*阶乘n-1;//计算与缓存 2我们如何将in运算符用于下一行中的函数参数? 如果n在阶乘中//如果没有缓存

编辑:

我得到阶乘[1]=1;设置函数阶乘中的属性“1”:1

但是,是否可以如下设置函数的属性

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

函数仍然是一个对象,因此可以为该对象指定属性。基本上,您将'n'设置为阶乘的一个属性,这样您就不必每次都重新计算它。 “in”运算符的功能由此产生,在本例中,它与factorial.hasOwnPropertyn大致相同,但并不完全相同。
因此,从技术上讲,您使用阶乘函数作为映射,数字作为键,看起来类似于数组。

在javascript中,函数是第一类对象。。。。所以它们也有属性和方法,但函数中的表达式参数总是返回false。如果没有用作数组,factorial[1]只是使用访问factorial的属性,名称为1。
function f() {
a: 2
}

alert(f.a);  //get 2 as output