JS 中的闭包理解
2021-01-18 08:15
标签:block 作用 嵌套 lock 使用 闭包 ++ function 内存 如何产生闭包? 当一个嵌套的内部(子)函数引用了嵌套外部(父)函数的变量(函数)时,就产生了闭包 注意: 闭包存在于嵌套的内部函数中 产生闭包的条件? 作用: 缺点: 内存溢出和内存泄漏 内存溢出: 内存泄漏: 代码理解 JS 中的闭包理解 标签:block 作用 嵌套 lock 使用 闭包 ++ function 内存 原文地址:https://www.cnblogs.com/xyf724/p/13353927.html闭包
//延长了生命周期和操作局部函数的内部变量
function fn1() {
var a = 1
function fn2() {
a++
console.log(a)
}
return fn2
}
var f = fn1()
f() //2
f() //3
var name = ‘The window‘
var obj = {
name: ‘The object‘,
getName: function() {
return function(){
return this.name
}
}
}
console.log(obj.getName()()); //The window
/*
分析:
obj.getName(): function() { return this.name} 使 a = obj.getName()
a(): this.name 这里就是全局调用,this指向window
并且这里可以看出没有使用闭包
*/
var name = ‘The window‘
var obj = {
name: ‘The object‘,
getName: function() {
var that = this
return function(){
return that.name
}
}
}
console.log(obj.getName()()); //The Object
/*
分析:
obj.getName(): function() { return that.name} 使 a = obj.getName()
a(): that.name 这里就是全局调用,that指向obj中的this
使用闭包
*/