$('.dropdown').dropdown()调用的问题

$('.dropdown').dropdown()调用的问题

老师说为了插件定义的dropdown方法不暴露在全局变量中,使用匿名自我执行()(),那为啥在html中$(xx).dropdown可以访问到局部作用域里面的局部函数dropdown呢,有点晕了,忘记了一些基础知识

正在回答

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

3回答

同学你好,可以参考下方理解:

1、全局变量:声明在全局的可以称为全局变量,如下:
http://img1.sycdn.imooc.com//climg/5e0dc42809511b4c02710109.jpg

2、局部变量:声明在函数里面的可以称为局部变量,如下:
http://img1.sycdn.imooc.com//climg/5e0dc47b0912f39503390163.jpg

3、全局变量在任意地方都可以读取,如下:

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

控制台:

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

4、局部变量只能在所声明的函数里面读取,函数外部不能读取,如下:

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

控制台:
http://img1.sycdn.imooc.com//climg/5e0dc5cf09e2f71e06040201.jpg

从上方的例子中可以看出,全局变量在任意地方都可以读取,也代表着暴露到外部会比较严重。

而局部变量就会避免这种问题。

如果还有其他疑问,建议在问答区重新提问,便于后期查找总结

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

好帮手慕言 2020-01-02 14:40:00

同学你好,在html文件中引入了dropdown.js,利用$.fn.extend() 将dropdown方法添加到jQuery的原型上。在js中不管写不写()(),在html中都是可以调用的。老师这里使用函数自执行,在函数自执行外部是不能改变或者读取函数自执行里面的代码。也就是第二个打印,是会报错的。

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

  • 提问者 RahodJoe #1
    我明白您的意思了,那如果是这样的话,视频老师为什么强调什么局部 全局变量,全局暴露啥的,你这么在html引用了js,然后html下面的script里面的js都能访问到了你js 文件里面的变量,那什么全局,局部,又体现在了哪里,我晕啦。。
    2020-01-02 17:45:52
好帮手慕言 2020-01-02 11:49:31

同学你好,因为在html中引入了dropdown.js,所以在html中是可以使用的。

可以理解为:在函数自执行以外,是不能获取函数自执行里面的内容的。可以参考下方:

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

控制台:

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

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

  • 提问者 RahodJoe #1
    老师中午好,我正是这个意思,dropdown.html调用了dropdown.js,但是$('.dropdown').dropdown();这行代码是dropdown.html里面<script src="../js/dropdown.js"></script>下面的script标签里面的写的,这样不就同等于您举的例子里面第二报错的console.log吗,难道说是第一不报错的console.log,那怎么理解sctipt标签里面的 $('.dropdown').dropdown(); 等同于已经在自执行的匿名函数($('.dropdown').dropdown(); )(jQuery)了呢?不太理解这里呢
    2020-01-02 12:44:40
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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