跳到主要内容

认识

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 的词法作用域和函数一等公民特性实现的。词法作用域意味着函数寻找变量时是根据函数定义的位置,而非调用的位置。