6.2.4 闭包捕获上下文
2025年09月26日
6.2.4 闭包捕获上下文
在前面小节中讲到函数的嵌套函数和作用域时,我们提到函数内的函数可以访问函数中声明的变量。如果读者想做一个用于控制体重的应用,里面有个函数是用来计算每天实际净摄入的能量的,那么可以按如下示例操作:
动手写6.2.5 CalculateCalories
控制台输出如下:
本例中,先定义了一个返回值是函数的函数CalculateCaloriesByEating(),此函数的传入参数是某个人的基础代谢,返回函数pureEatingCalories()。pureEatingCalories()函数用于计算每次摄入能量之后净增的卡路里数,它通过作用域可以访问totalCalories的值,并对其进行了修改。现在注意person1这个变量,它持有了一个pureEatingCalories()函数,而这个函数能够访问到被置为-1000的totalCalories参数,并在每次摄入能量之后及时更新totalCalories的值。在person1没有被释放之前,其持有上下文的变量就是一直可以被访问到的。