方君の小窝 方君の小窝
首页
  • 原生js总结
  • 样式相关
  • vue
  • 其他必备知识
  • php
其他
GitHub

方君

迷糊小前端
首页
  • 原生js总结
  • 样式相关
  • vue
  • 其他必备知识
  • php
其他
GitHub
  • 原生js总结

    • js基础
    • ajax
    • 跨域,js同步异步
    • promise(待扩展,微队列及all,race案例)
    • 原型、原型链、继承
    • 闭包
      • 闭包的好处:
    • 设计模式-单例、观察者
    • jquery
    • json格式
    • class
    • 模块化
    • cookie
  • 样式相关

  • vue

  • 其他必备知识

  • 前端
  • 原生js总结
方君
2020-08-24

闭包

# 闭包

可以访问另一个函数作用域中变量的函数。

  • 函数可以访问该函数外部定义的变量

  • 函数可以访问其他函数内部定义的变量

//最简单的闭包   访问全局变量
var sMessage = "hello world";

function sayHelloWorld() {
  alert(sMessage);
}

sayHelloWorld();

//访问内部变量

function fun(){
    var a=4;//局部变量
    return a;
}

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//计数器困境

var counter = 0;
 
function add() {
   console.log(counter += 1);
}
add();
add();
add();
// 计数器现在为 3
function add() {
    var counter = 0;
    console.log(counter += 1);
}
add();//1
add();//1
add();//1
//匿名函数执行
var add = (function () {
    var counter = 0;
    return function () {console.log(counter += 1)}
})();

add();
add();
add();

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
  • 闭包的特点:在函数内声明一个新的函数,并return内部函数
  • 闭包会使函数中的变量一直存在,导致内存消耗过大,不能滥用
  • 闭包不会被垃圾回收机制回收

# 闭包的好处:

  1. 希望一个变量长期存在内存中(开辟新的内存空间存放数据)
  2. 可以获取局部变量
  3. 避免全局污染
编辑
#基础
原型、原型链、继承
设计模式-单例、观察者

← 原型、原型链、继承 设计模式-单例、观察者 →

最近更新
01
vue自定义指令&生命周期
08-24
02
ajax
08-24
03
promise
08-24
更多文章>
Theme by Vdoing | Copyright © 2019-2020
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式