关于闭包的详解,以及为什么要用它

关于闭包的详解,以及为什么要用它

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

闭包的特性:
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

你可能感兴趣的:(笔记,关于闭包的详解,以及为什么要用它)