蚌埠做网站,网站建设参考的文献,关于网站建设知识,便宜网站建设公司哪家好一、怎么理解闭包#xff1f; 简单理解#xff1a;闭包 内层函数 外层函数的变量 下面是一组简单的闭包代码#xff1a;
function outer() {let count 1function inner() {console.log(count)}inner()
}
outer()闭包有两个注意点#xff1a; 闭包一定有return吗#x…
一、怎么理解闭包 简单理解闭包 内层函数 外层函数的变量 下面是一组简单的闭包代码
function outer() {let count 1function inner() {console.log(count)}inner()
}
outer()闭包有两个注意点 闭包一定有return吗不一定闭包一定会有内存泄露吗不一定 先来回答第一个例如上面那一组简单的闭包代码就没有用到return。
1、闭包什么时候用到return 外部如果想要使用闭包的变量则此时就需要return内层变量 function outer() {let count 1function inner() {countconsole.log(count)}return inner}const x outer()console.log(x)x()闭包应用能够实现数据的私有化。
例如统计函数的调用次数。
1、一般写法
let count1
function fun(){countconsole.log(函数被调用了${count}次)
}
fun() // 2
fun() // 3此时的count是全局变量很容易被修改一旦被修改就无法统计函数的调用次数了。 闭包写法
javascript
function fn() {let count1function fun(){countconsole.log(函数被调用了${count}次)}return fun
}
const resultfn()
result() //2
result() //3 这样就实现了数据私有缺点闭包会导致内存泄漏 上面代码中count变量会导致内存泄漏。 result是一个全局变量代码执行完毕不会立即销毁 而result使用fn函数 fn函数又返回fun函数 fun函数里面用到count 因此count被引用不会被回收所以一直存在 优点延长局部变量的生命周期、封装私有化变量