当前位置:   article > 正文

什么是匿名函数?_匿名函数的概念 特点和优势

匿名函数的概念 特点和优势

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

  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在内存空间中引用的地址会一直保存 不被释放,就造成了占用多于内存

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

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

什么是匿名函数自调?

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

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

其他写法:

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


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

  1. //全局变量 记录程序执行的总时间
  2. var t = 0;
  3. //第一段程序执行0.3s
  4. t+=0.3
  5. //第二段程序执行0.8s
  6. t+=0.8
  7. //.....
  8. var t = new Date()
  9. console.log(t)

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

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

  1. ​​//全局变量 记录程序执行的总时间
  2. var t = 0;
  3. //第一段程序执行0.3s
  4. t+=0.3
  5. //第二段程序执行0.8s
  6. t+=0.8
  7. //.....
  8. (function (){
  9. //这里的 t 就是局部变量了
  10. var t = new Date();
  11. consloe.log(t,匿名函数自调)
  12. })()
  13. console.log(t)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/958960
推荐阅读
相关标签
  

闽ICP备14008679号