鸿蒙闭包的理解
·
用官方的话来说:闭包是由函数及声明该函数的环境组合而成的。该环境包含了这个闭包创建时作用域内的任何局部变量。
说的明白一点:闭包环境的生成逻辑大概如下,在声明一个函数之后,在其内部再声明一个函数,内层函数调用外层的局部变量进行处理,并且返回这个变量,外层函数再把内层函数整体的函数体返回到外层函数体外,从而让全局中可以调用到外层函数体内的局部变量,从而避免了全局变量带来的一些弊端,起到缓存数据的作用
以下是一个简单的示例:
function f():() => number {
let count = 0;
let g = ():number => { count++;return count }
return g
}
let z = f()
// 每次调用z()都会保留count的值
console.log(`${z()}`) //1
console.log(`${z()}`) //2
console.log(`${z()}`) //3
//实现一个简单的累加计算器
function a():Function{
let count = 0
let g = (x:number,y:number = 0):number => {
count = count + x + y
return count
}
return g
}
let z = a()
console.log(z(1,5)) //6
console.log(z(8)) //14
更多推荐

所有评论(0)