这里有点不清楚,为什么要把window和document传进去

这里有点不清楚,为什么要把window和document传进去

是不是这样调用更快?好像不写也可以对吗???能说说这样写的原理是什么

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

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

2回答
好帮手慕久久 2020-07-21 11:17:26

同学你好,是的。具体如下:

如果不传入window,在index.js中,也可以访问到window,只是需要到全局中查找。传入后,直接在当前作用域查找就行了,从这方面讲,可以提高代码运行速度(说成调用更快,不太准确)。

祝学习愉快!

好帮手慕久久 2020-07-21 10:19:45

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

由于index.js中的变量,是处在一个自执行的匿名函数中,而代码中需要window和document,所以要作为参数传进去。具体如下:

index.js中的代码,都包裹在一个自执行的匿名函数中,形式如下:

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

这样该js中的变量“canChange”、“curPreviewImgIndex”等,就是一个局部作用域中的变量,而不是全局的,这样的好处就是,它们不会干扰全局中的同名变量。如果不将index.js中的代码包裹在自执行的匿名函数中,变量“canChange”、“curPreviewImgIndex”等就是全局的,如果之前全局中有个变量也叫canChange,那index.js中的canChange就可能将全局的canChange改变,所以将index.js中的代码包裹在自执行的匿名函数中。由于index.js中的代码执行时,需要全局对象window和document:

http://img1.sycdn.imooc.com//climg/5f16509909ea4d0d07020224.jpghttp://img1.sycdn.imooc.com//climg/5f1650bc09bfebc604730128.jpg

所以可以将它们俩作为参数,传给这个局部作用域,这样index.js中的代码,直接在当前作用域查找它们就行了。

这样写的主要是为了解决干扰全局变量这个问题,当然,如果确定变量不会重名,也可以不这样写。

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

  • 提问者 慕雪9296518 #1
    但是这里也可以访问到全局变量windows对不对?
    2020-07-21 10:23:35
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

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