本篇博客主要讲讲对以下这句话的理解:
简单来说,闭包是一个函数,它不仅包含了函数自身的代码,还包含了函数定义时所在的环境中的变量引用。
一、函数自身的代码
闭包是一个函数,就像任何普通函数一样,它有自己的一套指令集(代码),用于执行特定的任务。例如:
function outer() {
return function inner() {
console.log('Inner function');
};
}
const myFunction = outer();
myFunction(); // 输出 'Inner function'
这里的inner函数就是一个闭包,它包含了自己的代码console.log('Inner function');。
二、包含函数定义时所在的环境中的变量引用
当一个函数被定义在另一个函数内部时,它可以访问外部函数的变量。即使外部函数已经执行完毕,内部函数仍然可以访问这些变量,这是因为内部函数“记住”了外部函数的变量环境。
例如:
function outer() {
const message = 'Hello from outer';
return function inner() {
console.log(message);
};
}
const myFunction = outer();
myFunction(); // 输出 'Hello from outer'
在这里,inner函数是一个闭包,它不仅包含了自己的代码,还包含了对外部函数outer中变量message的引用。即使outer函数已经执行完毕,inner函数仍然可以访问message变量。
关于闭包的更多了解,请查看我之前写的一篇博客【JS面试题】闭包
如果我的博客有帮助到您,欢迎点赞加关注!❥(^_-)
1075

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



