共计 507 个字符,预计需要花费 2 分钟才能阅读完成。
什么是闭包
- 函数和函数外部能拜访到的变量的总和
- 变量过了它的生命周期还能拜访到
闭包的模式
函数作为返回值
function test() {
var a = 1
return function() {console.log('a', a)
}
}
var fn = test()
var a = 2
fn() // 1
函数作为参数
function test(fn) {
var a = 1
fn()}
var a = 2
function fn() {console.log('a', a)
}
闭包的利用
// 循环赋值问题
// test 调用完结循环曾经完结
function test() {var arr = []
for(var i = 0; i < 5; i++) {arr[i] = function() {console.log(i)
}
}
return arr
}
var res = test()
res[0]() // 5
// 解决
// i 在每一次循环中通过立刻执行函数传入
//
function test() {var arr = []
for(var i = 0; i < 5; i++) {arr[i] = (function(j) {return function() {console.log(j)
}
})(i)
}
return arr
}
var res = test()
res[0]() // 0
正文完
发表至: javascript
2022-06-28