JavaScript Function类型aguments的一点疑惑

0 0 javascript
ㄨ木子李
ㄨ木子李

声望值:97 0人

2018-12-21 11:11:35 提问

关注 0关注

收藏 0收藏, 59浏览

1.上图:

clipboard.png

clipboard.png

为了降低函数中的耦合度,我采用了arguments.callee指向当前函数。
这里的 return num*arguments.callee(num-1) 等价于 return num*factorial(num-1)
好处是无论引用函数时使用的是什么名字都可以保证正常完成调用。
我为了测试是否真的如此,就把factorial函数给重写了返回0;
问题来了:当使用表达式把一个函数赋值factorial变量时确实成功了:一个函数返回0,另一个函数返回120;
当使用函数声明的方式定义factorial函数同样返回0时,却两个函数都返回0;
函数表达式和函数声明的问题还是其他问题?

请先 登录 后评论

2个回答

  • cookeyang.101声望 2018-10-15 15:55

    函数声明提前的锅
    请先 登录 后评论
  • 汉有游女,不可求思。121声望 2018-10-15 15:55

    因为函数声明会被提前 你以为是这样的: function factorial (num) { if (num <= 1) // ... } var factorial_1 = factorial; function factorial (num) { return 0 } 其实是这样的 function factorial (num) { if (num <= 1) // ... } function factorial (num) { return 0 } var factorial_1 = factorial;
    请先 登录 后评论

注册新账号

悬赏追问
10
  • 10
  • 20
  • 50
  • 100
  • 200
  • 输入数值
发布追问