有两个问题没弄明白

有两个问题没弄明白

1:函数里面也可以使用this.function(){}这样来定义函数吗,这个this是指向的是什么,这种方式跟用function直接声明一个函数有什么区别吗
2:第一次调用之后num的值不是加1变成了2吗,为什么第二次再++num的时候不是3而是2

正在回答

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

3回答

同学你好,问题解答如下:

1. 普通函数中的this,指代window,同学可以打印看一下:

http://img1.sycdn.imooc.com//climg/5eb67b260964c8ce07490504.jpg

在函数内部使用this声明的函数是全局变量,而使用function直接声明的函数是局部作用域的,如下:

http://img1.sycdn.imooc.com//climg/5eb67b36091000f805540250.jpg

2.  该练习题这位同学的解释是对的,可以参考下:

http://img1.sycdn.imooc.com//climg/5eb67b500908066203870099.jpg

整体分析如下:

http://img1.sycdn.imooc.com//climg/5eb67b80093408b815330532.jpg

以第一个console为例,先执行test()得到函数subTest,再次执行相当于执行了subTest(),在subTest内++num,是先进行加运算再把结果返回,所以得到2,打印结果就是2;

第二次console,执行test,此时开启一个新的作用域,与第一个作用域无关联,num的值初始化为1,所以最后还是打印2。

而下面的例子则与上面不同:

http://img1.sycdn.imooc.com//climg/5eb67bad092d9f0d09300384.jpg

同学对比着再看一下。

如果我的回答帮到了你,欢迎采纳,祝学习愉快!

WittChen 2020-05-09 15:49:02

http://img1.sycdn.imooc.com//climg/59537c320001e73d03590205.jpg

同学说的是这个吧

第二个问题,因为上下都是通过test()(),来调用的,也就是说这是两个不相关的对象,因此都是2

我给你做了调整你去试试,就是你说的3了

var tem = test();
console.log(tem());
console.log(tem());

我不是老师哦,友情帮助,嘿嘿

  • 提问者 慕仙0287733 #1
    多谢这位同学的帮助?
    2020-05-10 10:23:38
WittChen 2020-05-09 15:44:09

同学你好:

问题一:语法就存在问题,运行不了,this.funciton(){}没有任何意义

问题二:不贴代码,不知道你提的是哪个作业中的哪个问题

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

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

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

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

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

在线咨询

领取优惠

免费试听

领取大纲

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