JavaScript函数闭包

流楚丶格念 2021-07-20 03:52:50
javascript


函数闭包导引

function fn () {
var count = 0
return {
getCount: function () {
console.log(count)
},
setCount: function () {
count++
}
}
}
var fns = fn()
fns.getCount() // => 0
fns.setCount()
fns.getCount() // => 1

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.

什么是闭包

闭包就是能够读取其他函数内部变量的函数,由于在 Javascript 语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成 “定义在一个函数内部的函数”。

所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。

  • 闭包的模式:函数模式的闭包,对象模式的闭包
  • 闭包的作用:缓存数据,延长作用域链(既是优点也是缺点)
  • 闭包的用途:
    • 可以在函数外部读取函数内部成员
    • 让函数内成员始终存活在内存中

闭包的例子

示例1:

var arr = [10, 20, 30]
for(var i = 0; i < arr.length; i++) {
arr[i] = function () {
console.log(i)
}
}

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

示例2:

console.log(111)
for(var i = 0; i < 3; i++) {
setTimeout(function () {
console.log(i)
}, 0)
}
console.log(222)

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

点赞小案例

沙箱模式

版权声明
本文为[流楚丶格念]所创,转载请带上原文链接,感谢
https://blog.51cto.com/u_15265965/2891967

  1. 【django轻量级框架】Django项目导入css,js,images等静态文件
  2. 2.4.5全局样式与局部样式和2.4.6 CSS变量-页面样式与布局【uni-app从入门到精通在线教程(黄菊华-跨平台开发系列教程)】
  3. 微信小程序界面设计小程序中的WXSS(css)选择器课程-::first-line 伪元素
  4. 微信小程序界面设计小程序中的WXSS(css)选择器课程-伪类-:empty 伪类
  5. 微信小程序界面设计小程序中的WXSS(css)选择器课程-伪类-:checked 伪类(不支持)
  6. 微信小程序界面设计小程序中的WXSS(css)选择器课程-子元素选择器
  7. 微信小程序界面设计小程序中的WXSS(css)选择器课程-相邻兄弟选择器
  8. 微信小程序界面设计小程序中的WXSS(css)选择器课程-后代选择器
  9. 微信小程序界面设计小程序中的WXSS(css)选择器课程-属性选择器
  10. 微信小程序界面设计小程序中CSS3样式精通课程-框大小box-sizing
  11. 微信小程序界面设计小程序中CSS3样式精通课程-多列-Columns列的宽度和列数
  12. 微信小程序界面设计小程序中的WXSS(css)选择器课程-伪类-:last-of-type 伪类
  13. 微信小程序界面设计小程序中的WXSS(css)选择器课程-伪类-:only-child 伪类
  14. 微信小程序界面设计小程序中的WXSS(css)选择器课程-伪类-:only-of-type 伪类
  15. 微信小程序界面设计小程序中的WXSS(css)选择器课程-::after伪元素
  16. 微信小程序界面设计小程序中的WXSS(css)选择器课程-::before伪元素
  17. 微信小程序界面设计小程序中的WXSS(css)选择器课程-伪类-:nth-last-of-type()伪类
  18. 微信小程序界面设计小程序中的WXSS(css)选择器课程-伪类-:nth-of-type() 伪类
  19. 微信小程序界面设计小程序中的WXSS(css)选择器课程-伪类-:last-child 伪类
  20. 微信小程序界面设计小程序中的WXSS(css)选择器课程-伪类-:disabled | :enabled 伪类
  21. 微信小程序界面设计小程序中的WXSS(css)选择器课程-伪类-:first-child 伪类
  22. 微信小程序界面设计小程序中的WXSS(css)选择器课程-伪类-:first-of-type 伪类
  23. 微信小程序界面设计小程序中的WXSS(css)选择器课程-伪类-:focus 伪类
  24. 微信小程序界面设计小程序中的WXSS(css)选择器课程-派生选择器
  25. 微信小程序界面设计小程序中的WXSS(css)选择器课程-伪类-:nth-child() 伪类
  26. 微信小程序界面设计小程序中的WXSS(css)选择器课程-选择器的分组
  27. HTML基础-简介
  28. ASP实战之HTML入门-黄菊华-专题视频课程
  29. 微信小程序WxParse解析富文本(html)代码在线视频教程
  30. HTML语言基础.上
  31. HTML语言基础.下
  32. HTML!
  33. 【网页前端设计Front end】HTML语言基础.上(看不懂你来打我)
  34. 【网页前端设计Front end】HTML语言基础.下(看不懂你来打我)
  35. 【django轻量级框架】HTML上传文件拦截到本地
  36. HTML5基础知识实战演练教程-黄菊华-专题视频课程
  37. 基于WEB的HTML5购物网站、H5电商购物平台网上商城网站毕业设计(1)商城首页
  38. 基于WEB的HTML5购物网站、H5电商购物平台网上商城网站毕业设计(2)商城分类
  39. Introduction of modern JavaScript chart library apexcharts.js | software
  40. 微信小程序框架weui的基础使用
  41. 一文入魂!彻底巩固你的Nginx知识体系!
  42. Nginx是什么?有哪些核心技术?
  43. Nginx配置如何一键生成
  44. 就这一次把网路的几种IO模型以及Nginx基本原理彻底搞清楚
  45. 优质高效,阿里性能怪兽宝典(Redis+Nginx)限时开源,手慢无!
  46. Nginx的配置文件nginx.conf配置解释
  47. 安装的nginx 地址重写
  48. nginx防盗链
  49. nginx动静分离
  50. nginx优化
  51. Nginx虚拟主机
  52. Nginx 反向代理
  53. IDEA实现热部署前端界面(Tomcat、IDEA)
  54. JavaScript中call与apply的区别
  55. JavaScript代码无分号问题
  56. 在Chrome浏览器中禁用JavaScript
  57. JavaScript为内置对象添加原型方法
  58. JavaScript原型数据共享与方法共享探究
  59. JavaScript把局部变量变成全局变量
  60. JavaScript函数自调用