关于匿名函数问题

关于匿名函数问题

为什么开头要写一个(function(){...})();让匿名函数自动运行,而不是写一个有名称的函数,然后在下面调用它呢?这样做有什么好处?

正在回答

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

2回答

同学你好,主要有以下两点:

1、省去定义的过程,代码变得更加简洁

2、省去了普通函数命名的过程

匿名函数,仅在调用时,才临时创建函数对象和作用域链对象;调用完,立即释放,所以匿名函数比非匿名函数更节省内存空间。

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

  • 人生的起源 提问者 #1
    那如果直接运行,不用匿名函数包裹,又有什么区别呢?
    2020-02-14 11:15:43
好帮手慕粉 2020-02-14 11:36:23

同学你好,如果不用匿名函数包装,函数是不会直接运行的啊,非匿名函数只有在调用的时候才会执行的。最直观的区别:

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

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

  • 提问者 人生的起源 #1
    我的意思是不用匿名函数包裹里面的代码,直接把代码裸露在外面,你看下面: (function(){console.log(1);})(); //这个是外面包裹了匿名函数的 console.log(1); //这个是没包的,一样可以运行 请问多包一个匿名函数在外面有什么优势?
    2020-02-14 12:40:46
  • 好帮手慕粉 回复 提问者 人生的起源 #2
    同学你好,如果不包匿名函数,这些代码就会变成全局下的,浪费空间,又不会自动销毁,而放在匿名函数内,就属于局部的了,用完就会自动销毁,防止了大量空间的占用和浪费。如果我的回答帮助了你,欢迎采纳,祝学习愉快~
    2020-02-14 14:29:58
  • 提问者 人生的起源 回复 好帮手慕粉 #3
    懂了,谢谢!
    2020-02-14 14:33:40
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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