为什么test函数执行两次的结果一样

正在回答 回答被采纳积分+1

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

1回答
好帮手慕星星 2018-08-16 09:50:44

第一段代码:

闭包不止可以取到外层函数中的局部变量,还可以将值保存在内存中。 所以每次弹出来的值都是经过加1之后的。

第二段代码:

函数内部的局部变量,可以通过特权方法访问。

第一次执行 test()() ,num 赋值 1 ,然后运行subTest 中的++num ,所以值为2。

第二次还是执行test()() ,重新 num 赋值 1 ,然后运行subTest 中的++num ,所以值也为2。

自己再理解下,祝学习愉快~~


  • 老师,我也有一样的疑问。那这两段的区别到底在哪呢?是第一段的subTest是用function subTest()声明的,而第二段是用this.subTest=function()声明的导致的吗?那第二段this这种声明方式特殊在哪里呢?
    2019-04-06 15:43:21
  • 不是函数的声明方式导致的,是调用test函数的时候,第一段代码用一个全局变量接收返回出来的函数,两次调用的是返回出来的这个函数,因为这个函数中用了test中的变量,而全部变量是不会自动回收的,所以每调用一次返回出来的函数变量就会增加。 而第二段代码是调用完test函数之后继续调用返回出来的函数,没有一个全局变量接收,这样test函数中的变量调用完之后就会被回收,所以每次重新调用的时候就会重新赋值。
    2019-04-07 10:47:19
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
组件化思想开发电商网页 18版
  • 参与学习           人
  • 提交作业       467    份
  • 解答问题       4826    个

本路径带你通过系统学习HTML5、JavaScript、jQuery的进阶知识,不仅如此,还会学习如何利用组件化的思想来开发网页,知识点+案例,使得所学可以更好的得到实践。

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

在线咨询

领取优惠

免费试听

领取大纲

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