什么是闭包(closure),为什么要用它?

什么是闭包(closure),为什么要用它?

闭包是指有权访问另一个函数作用域中变量的函数,创建闭包的最常见的方式就是在一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量,利用闭包可以突破作用链域,将函数内部的变量和方法传递到外部。

闭包的特性:

1.函数内再嵌套函数2.内部函数可以引用外层的参数和变量3.参数和变量不会被垃圾回收机制回收

//li节点的onclick事件都能正确的弹出当前被点击的li索引

  • index = 0
  • index = 1
  • index = 2
  • index = 3

执行say667()后,say667()闭包内部变量会存在,而闭包内部函数的内部变量不会存在; 使得Javascript的垃圾回收机制GC不会收回say667()所占用的资源; 因为say667()的内部函数的执行需要依赖say667()中的变量; 这是对闭包作用的非常直白的描述

function say667() {

// Local variable that ends up within closure

var num = 666;

var sayAlert = function() {

alert(num);

}

num++;

return sayAlert;

}

var sayAlert = say667();

sayAlert()//执行结果应该弹出的667

相关典藏

Access数据库常用函数大全
bt365网址

Access数据库常用函数大全

📅 08-23 👁️‍🗨️ 3878
莘的意思解释
365bet博彩官网

莘的意思解释

📅 12-16 👁️‍🗨️ 5758
华为待遇最好的三个部门(入职华为有哪些部门)
bt365网址

华为待遇最好的三个部门(入职华为有哪些部门)

📅 08-17 👁️‍🗨️ 9242