Js闭包 - 蓝蓝设计_UI设计公司

帝皇彩票官网

追求卓越一诺千金

蓝蓝设计,2011年成立,主创清华团队,专注软件和互联网ui设计开发。擅长企业信息化管理、监控、大数据软件UIUE咨询和设计开发服务。立足UI,好好学习,天天进步!


Js闭包

2020-3-3 前端达人


所谓闭包就是说,闭包是指有权访问另外一个函数作用域中的变量的函数.可以理解为(能够读取其他函数内部变量的函数)
闭包的三大特点为(既是优点,也是缺点):
1,函数作用域空间不会被销毁
优点是:空间中的内容,永远存在
缺点是:占用大量的内存空间
2,可以从外部访问函数内部的变量
优点是:使用变量数据方便
缺点是:容易泄露数据信息
3,保护私有作用域变量
优点是:确保私有作用域变量一直存在
缺点是:占用内存空间 闭包的最大问题是:有可能造成占用大量的内存空间,降低程序的执行效率,甚至有可能造成数据溢出或者是数据泄露 因为为了保护数据的安全性,特殊情况下,才会使用闭包举例来说:
// 记数器:

//全局变量  全局变量降低函数的独立性
1
// var count = 0;
// function add(){
// return count++;
// }
// console.log(add());
// console.log(add());
// console.log(add());

//局部变量  函数执行外  局部变量销毁
1
// function add(){
// var count = 0;
// return count++;
// }
// console.log(add());
// console.log(add());
// console.log(add());

//plus定义在add的内部,可以访问add局部变量count
//f为一个全局变量,通过赋值后,成为add的返回值,也就是plus方法
//访问到了add中的局部变量count
//所以count虽然是局部变量,但不允许被销毁,plus就是闭包
1
2
3
4
// function add(){
// var count = 0;
// function plus(){
// return count++;
// }
// return plus;
// }
//
// var f = add();
//
// console.log(f());
// console.log(f());
// console.log(f());

//变身
1
// function add(){
// var count = 0;
// return function(){
// return count++;
// }
// }
//
// var f = add();
//
// console.log(f());
// console.log(f());
// console.log(f());

//继续变身
1
// var f = (function (){
// var count = 0;
// return function(){
// return count++;
// }
// }());
//
// console.log(f());
// console.log(f());
// console.log(f());
//JS中,没有块作用域,但是在闭包的写法里,可以体现出来。
function outerFunc(){
var outVar = 10;
var innerF = function (){
var innerVar = 20;//该变量虽然隶属于outerFunc内部,但是它的作用域范围只在innerF对应的函数体内,属于块级作用域
}
alert(innerVar);
return innerF;
}

闭包的作用:
正常函数执行完毕后,里面声明的变量被垃圾回收处理掉,但是闭包可以让作用域里的 变量,在函数执行完之后依旧保持没有被垃圾回收处理掉

可以读取函数内部的变量
让这些变量的值始终保持在内存中。
增加块级作用域
总结:
1、 闭包是指有权访问另一个函数作用域中的变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量。
2、 闭包的缺点就是常驻内存,会增大内存使用量,使用不当很容易造成内存泄露。
3、不必纠结到底怎样才算闭包,其实你写的每一个函数都算作闭包,即使是全局函数,你访问函数外部的全局变量时,就是闭包的体现。



————————————————
版权声明:本文为CSDN博主「澈野」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/fie_ld/article/details/104595753
标签: js html+css基础入门学习教程之HTML 样式»


蓝蓝 http://www.bjhbys.com

  1. 2020年3月(29)
  2. 2020年2月(60)
  3. 2020年1月(32)
  4. 2019年12月(50)
  5. 2019年11月(61)
  6. 2019年10月(49)
  7. 2019年9月(48)
  8. 2019年8月(58)
  9. 2019年7月(58)
  10. 2019年6月(58)
  11. 2019年5月(31)
  12. 2019年4月(37)
  13. 2019年3月(43)
  14. 2019年2月(25)
  15. 2019年1月(45)
  16. 2018年12月(41)
  17. 2018年11月(40)
  18. 2018年10月(29)
  19. 2018年9月(40)
  20. 帝皇彩票官网2018年8月(87)
  21. 帝皇彩票官网2018年7月(107)
  22. 2018年6月(86)
  23. 2018年5月(110)
  24. 2018年4月(40)
  25. 帝皇彩票官网2018年3月(35)
  26. 2017年8月(35)
  27. 2017年7月(45)
  28. 2017年6月(7)
  29. 2017年5月(27)
  30. 2017年4月(51)
  31. 2017年3月(70)
  32. 2017年2月(65)
  33. 2017年1月(69)
  34. 2016年12月(55)
  35. 帝皇彩票官网2016年11月(111)
  36. 2016年10月(92)
  37. 2016年9月(53)
  38. 2016年8月(9)
  39. 2016年7月(4)
  40. 2016年6月(9)
  41. 2016年3月(19)
  42. 2016年2月(26)
  43. 2016年1月(30)
  44. 2015年12月(33)
  45. 2015年11月(35)
  46. 2015年10月(46)
  47. 2015年9月(43)
  48. 2015年8月(40)
  49. 2015年7月(33)
  50. 2015年6月(46)
  51. 2015年5月(58)
  52. 2015年4月(70)
  53. 2015年3月(55)
  54. 2015年2月(17)
  55. 2015年1月(33)
  56. 2014年12月(21)
  57. 2014年11月(84)
  58. 2014年10月(94)
  59. 2014年9月(6)
  60. 2014年8月(1)
  61. 2014年7月(13)
  62. 2014年6月(66)
  63. 2014年5月(99)
  64. 2014年4月(88)
  65. 2014年3月(102)
  66. 2014年2月(68)
  67. 2014年1月(83)
  68. 2013年12月(106)
  69. 2013年11月(112)
  70. 2013年10月(61)
  71. 2013年9月(20)
  72. 帝皇彩票官网2013年7月(13)
  73. 2013年6月(27)
  74. 帝皇彩票官网2013年5月(48)
  75. 帝皇彩票官网2013年4月(39)
  76. 2013年3月(8)
  77. 2013年2月(20)
  78. 2013年1月(31)
  79. 2012年12月(33)
  80. 2012年11月(31)
  81. 2012年10月(23)
  82. 2012年9月(8)
  83. 2012年7月(14)
  84. 2012年6月(15)
  85. 2012年5月(31)
  86. 2012年4月(24)
  87. 2012年2月(4)
  88. 2012年1月(8)
  89. 帝皇彩票官网2011年12月(35)
  90. 2011年11月(32)
  91. 2011年10月(13)
  92. 2011年8月(1)
  93. 2011年6月(1)
订阅Rss
状元彩票官网 吉利彩票开奖 大象彩票APP 吉利彩票开奖 状元彩票平台 大象彩票登入 内蒙古快3计划 桔子彩票官网 博乐彩票计划群 博发彩票APP下载