认识
2023年03月16日
一、认识
闭包是 JavaScript
中一个强大而独特的特性。本质上, 一般情况下函数执行完毕后会将函数内部成员所占内存释放掉。但当内部函数引用外部函数的变量或参数时, 即使外部函数执行完毕, 这些变量因被内部函数引用, 不会被垃圾回收, 而是保留在内存中供内部函数使用。闭包的核心作用就是将函数内部成员的作用范围延长。
从技术角度看, 闭包是基于 JavaScript
的词法作用域和函数一等公民特性实现的。词法作用域意味着函数寻找变量时是根据函数定义的位置,而非调用的位置。
二、语法
2.1 返回内部函数
function createCounter(){
let count = 0;
return function(){
return ++count;
}
}
const counter = createCounter();
counter();
counter();
2.2 内部函数赋值
let counter = null;
function createCounter(){
let count = 0;
counter = function(){
return count++;
}
}
createCounter();
counter();
counter();
三、问题
3.1 闭包是什么?
闭包是 JavaScript
中一个强大而独特的特性。本质上, 一般情况下函数执行完毕后会将函数内部成员所占内存释放掉。但当内部函数引用外部函数的变量或参数时, 即使外部函数执行完毕, 这些变量因被内部函数引用, 不会被垃圾回收, 而是保留在内存中供内部函数使用。闭包的核心作用就是将函数内部成员的作用范围延长。
从技术角度看, 闭包是基于 JavaScript
的词法作用域和函数一等公民特性实现的。词法作用域意味着函数寻找变量时是根据函数定义的位置,而非调用的位置。
3.2 说说你对闭包的理解?
闭包是 JavaScript
中一个强大而独特的特性。本质上, 一般情况下函数执行完毕后会将函数内部成员所占内存释放掉。但当内部函数引用外部函数的变量或参数时, 即使外部函数执行完毕, 这些变量因被内部函数引用, 不会被垃圾回收, 而是保留在内存中供内部函数使用。闭包的核心作用就是将函数内部成员的作用范围延长。
从技术角度看, 闭包是基于 JavaScript
的词法作用域和函数一等公民特性实现的。词法作用域意味着函数寻找变量时是根据函数定义的位置,而非调用的位置。