什么是闭包?及闭包的应用场景有哪些

5.闭包

一个函数的作用域可以访问另一个函数的局部变量,这个变量所在的函数就是闭包函数

闭包使得内部函数可以访问外部函数的属性(变量或方法)

在 JavaScript 中, 每当创建一个函数, 闭包就会在函数创建的同时被创建出来

闭包本身就是 javascript 的重要知识点

5.1变量的作用域复习

变量根据作用域的不同分为两种:全局变量和局部变量。

  1. 函数内部可以使用全局变量。
  2. 函数外部不可以使用局部变量。
  3. 当函数执行完毕,本作用域内的局部变量会销毁。

5.2什么是闭包

闭包(closure)指有权访问另一个函数作用域中变量的函数。

简单理解就是 ,一个作用域可以访问另外一个函数内部的局部变量

什么是闭包?及闭包的应用场景有哪些_第1张图片

5.3闭包的作用

  • 作用:延伸变量的作用范围。
  • 变量不会销毁(核心作用)
  • 变量什么时候不会销毁:变量被引用并且有内存
  • 闭包的缺点:内存泄漏(栈溢出)
  • 闭包的场景:以下代码
var liList = ul.getElementsByTagName('li')
for(var i=0; i<6; i++){
    
  !function(ii){
     //立即执行函数
    liList[ii].onclick = function(){
    
      alert(ii) // 0、1、2、3、4、5
    }
  }(i)
}
//注:如果不加立即执行函数全局变量i==6 ,点击任何一个li都是6(因为只有在for循环结束才会触发事件)

闭包形成的条件

1,函数嵌套

2.将内部函数作为返回值返回

3.内部函数必须使用到外部的变量

 function fn() {
   
   var num = 10;
   function fun

你可能感兴趣的:(经验分享,JavaScript,javascript,前端,html)