闭包的概念:有权访问其他函数的内部变量的函数
闭包是作用域运用的特殊场景。注:js中自由变量的查找是在函数定义的地方向上级作用域查找,不是在执行的地方。
闭包的使用场景概况为两种,一种是函数作为参数被传递,一种是函数作为返回值被返回
1、函数作为返回值被返回
let xx = 10
function func1(){
let xx = 100
return function(){
console.log(xx)
}
}
let func2 = func1()
func2()

2、函数作为参数被传递
let xx = 10
function fn1(fn){
let xx = 100
fn()
}
function fn(){
console.log(xx)
}
fn1(fn)

3、定时器传参
function func(n){
return function(){
console.log(n, '一秒钟后打印的数据')
}
}
setTimeout(func(100), 1000)

以上两个例子,可以帮助理解【js中自由变量的查找是在函数定义的地方向上级作用域查找,不是在执行的地方】
闭包是一个能访问其自身作用域以及包含它的函数作用域的函数。JS中,自由变量的查找发生在定义时而非执行时。闭包常见用法包括:函数作为返回值(如示例1)和作为参数传递(如示例2),以及在定时器中传参(如示例3)。这些示例展示了闭包如何保留并访问外部作用域的变量。
269

被折叠的 条评论
为什么被折叠?



