为了账号安全,请及时绑定邮箱和手机立即绑定

JavaScript Function类型aguments的一点疑惑

JavaScript Function类型aguments的一点疑惑

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

1 回答

?
紫衣仙女

TA贡献1839条经验 获得超15个赞

因为函数声明会被提前


你以为是这样的:


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;


查看完整回答
反对 回复 2019-03-03
  • 1 回答
  • 0 关注
  • 778 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号