什么是匿名函数?

本文介绍了匿名函数的概念,强调其在内存管理中的优势,如在回调函数中的应用可以节约内存并防止全局变量污染。同时讨论了匿名函数自调的使用场景和避免全局变量污染的方法。
摘要由CSDN通过智能技术生成

什么是匿名函数:定义函数时 不指定函数名的函数。
优势:节约内存 ,避免产生全局变量,造成全局污染;
使用情景:

  1. 所有的回调函数都要定义为匿名函数 (节约内存)
  2. 匿名函数自调  (避免产生全局变量,造成全局污染)

1.所有的回调函数都要定义为匿名函数 (节约内存)

什么是回调函数?
自己定义了函数 ,但是不由自己调用,而是交给另一个函数,由另一个函数按需自动调用。
优点:节约内存
例如: 想将一个数字内容的数组升序排列 

      当执行到arr.sort( )的时候 会先执行( )里边的操作 也就是 function(a,b){xxx} ,因为function(a,b)没有变量名所以并没有存在变量里边  那么在arr.sort( )执行完之后 会释放function(a,b)占用的内存 ,会进行垃圾回收

arr.sort(function(a,b){return a-b})

 

下边的方式 较上边就浪费了内存 
     var fn 相当于定义了一个变量
     function( )相当于new Function( ) 在内存里开辟了一块内存空间 有唯一的地址
     因为有变量名 所以这块地址存在了变量里边保存
      那么当arr.sort( fn )调用的时候 就会先找到 fn变量 再找到定义的函数执行
      当执行完毕之后       arr.sort( )结束 但是 fn在内存空间中引用的地址会一直保存 不被释放,就造成了占用多于内存

var fn = function (a,b) {return a-b};
arr.sort(fn)

2.匿名函数自调  (避免产生全局变量,造成全局污染)

什么是匿名函数自调?

定义一个匿名函数后,立刻调用该函数执行,调用后立刻释放
优点:避免产生全局变量,造成全局污染
使用:
标准写法:

(function (){...})()
//创建新函数 立刻调用执行
//因为函数没有名字 所以调用后立刻释放

其他写法:

+function(){...}()
!function(){...}()


例:以下情况 就会造成 全局变量污染

//全局变量  记录程序执行的总时间
var t = 0; 
//第一段程序执行0.3s
t+=0.3
//第二段程序执行0.8s
t+=0.8
//.....
var t = new Date()
console.log(t)

用匿名函数自调的方式解决:

  建议每段函数都要用匿名函数自调的方式 减少变量污染

​​//全局变量  记录程序执行的总时间
var t = 0; 
//第一段程序执行0.3s
t+=0.3
//第二段程序执行0.8s
t+=0.8
//.....
(function (){
   //这里的 t 就是局部变量了 
   var t = new Date();
   consloe.log(t,匿名函数自调)
})()

console.log(t)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值