5-2选择题 为什么是2 2

正在回答

登陆购买课程后可参与讨论,去登陆

3回答

因为第一次test调用返回的是个在test内定义的函数,在加一个括号,是对该函数的调用。函数内执行的++num,num会沿着作用域链向上访问到1的值,然后++在前,所以先加1,然后再将结果返回,所以是2。

两次调用相互独立,都是执行的上面的过程。所以输出2 2

  • web_東 #1
    function testAA(){ var n=99; function subTestAA(){ return ++n; }; return subTestAA; } alert(testAA()()); 是这个意思吧?
    2017-12-26 10:42:09
web_東 2017-12-26 10:45:28

2中写法效果一样,

我还有问题,  this.subTestAA=function(){
       return ++n;
   };可以当成父函数testAA的子函数吗?可以这样理解?

  • Miss路 #1
    你可以这么理解。
    2017-12-26 11:00:37
  • web_東 回复 Miss路 #2
    谢谢。老师。
    2017-12-27 09:27:22
web_東 2017-12-26 10:43:14


function testAA(){
   var n=99;
   this.subTestAA=function(){
       return ++n;
   };
   return subTestAA;
}
alert(testAA()());


问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
进击JavaScript核心 2018
  • 参与学习       466    人
  • 提交作业       74    份
  • 解答问题       635    个

JavaScript不仅能实现静态页面到动态特效的转变,还能完成数据的动态交互,但是关于js到底功能有多强大,大家还是有所期待的,本路径将带你深入到js中,一一揭开JavaScript的神秘面纱。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师