闭包的概念与不闭包的区别(JavaScript)
Posted 曾胖神父
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了闭包的概念与不闭包的区别(JavaScript)相关的知识,希望对你有一定的参考价值。
闭包的概念
函数执行完后,其作用域就会被清理,局部变量会被回收。如果函数内声明了子函数,且该子函数暴露给全局作用域导致其一直
无法被回收。由于子函数可以访问上级作用域中的变量,导致即使上级函数执行完,上级函数作用域下被子函数使用的局部变量也不会销毁,我们把这个子函数连同其使用的上级作用域的局部变量成为闭包
什么是闭包
简单点说一个函数内部如果引用了一个既不是函数内部局部变量,也不是该函数参数的变量,这样就会形成一个闭包。
闭包与不闭包的区别
举个例子来比较。
//未闭包代码
function Test1()
return Test1;
//闭包代码
function Test2()
let a=0;
function Test3()
console.log(a++);
return Test3;
let Test1_Result1=Test1();
let Test1_Result2=Test1();
let Test2_Result1=Test2();
let Test2_Result2=Test2();
console.log(Test1_Result1===Test1_Result2);//结果为true
console.log(Test2_Result1===Test2_Result2);//结果为false
从输出结果就能看出,闭包与未闭包最大的区别,每个闭包函数是相互独立的,互不影响。利用闭包这个特性,就可以实现数据的封装与私有属性。
以上是关于闭包的概念与不闭包的区别(JavaScript)的主要内容,如果未能解决你的问题,请参考以下文章