楚奇游戏网
您的当前位置:首页关于JS闭包的介绍

关于JS闭包的介绍

来源:楚奇游戏网


这篇文章主要介绍了关于关于JS闭包的介绍,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

一、作用域

 var x = 0 //全局变量 x
 var y = 10 //全局变量 y
 var fun1 = function(){
 var x = 1 //fun1函数局部变量 x
 console.log(x++)
 console.log(y)
 } 
 fun1() //
输出 1 10 函数内可以访问函数上级的变量 console.log(x) //输出0 函数外部不能调用函数内部的局部变量

二、闭包

<!-- 闭包:有权访问另一个函数作用域中的变量的函数。大多是在一个函数内部创建另一个函数 -->
 var x = 0 //全局变量 x
 var fun1 = function(){
 var x = 1 //fun1函数局部变量 x
 function fun2() {
 console.log(x++) //当x = 1时 x++ = x ; ++x = x+1
 }
 return fun2 //此时fun2就是一个闭包
 } 
 var run1 = fun1()
 run1() //
输出 1 run1() //输出 2 run1是函数是引用类型,上一步运行run1将变量x改变进而影响这步的输出 var run2 = run1 run2() //输出 3 因为run2 = run1 run1和run2是函数属于引用类型 所以共用一个作用域链 run2() //输出 4 var run3 = fun1() run3() //输出 1 这里不是5 run3有自己的作用域链 run3() //输出 2 console.log(x) //输出 0
显示全文