MST

星途 面试题库

面试题:JavaScript中闭包的工厂函数模式基础应用

请使用JavaScript闭包的工厂函数模式创建一个函数,该函数返回一个新函数,新函数每次调用时会返回从1开始递增的数字。例如,第一次调用返回1,第二次调用返回2,以此类推。并解释你代码中闭包和工厂函数模式是如何工作的。
34.3万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试
function createCounter() {
    let count = 1;
    return function() {
        return count++;
    };
}

const counter = createCounter();
console.log(counter()); 
console.log(counter()); 

闭包和工厂函数模式的工作原理解释

  1. 工厂函数模式createCounter 是一个工厂函数。它的作用是创建并返回一个新的函数。工厂函数的特点就是它可以根据需要创建多个相似但相互独立的对象(这里是函数对象)。在这个例子中,每次调用 createCounter 都会返回一个新的函数,这些函数都有自己独立的状态(即 count 变量)。
  2. 闭包:返回的内部函数(即 function() { return count++; })形成了闭包。闭包是指一个函数能够访问并记住其词法作用域中的变量,即使这个函数是在其原始作用域之外执行。在这里,内部函数记住了 createCounter 作用域中的 count 变量。每次调用内部函数时,它都能访问并修改 count 的值,而 count 变量不会被垃圾回收机制回收,因为内部函数一直持有对它的引用。这样就实现了每次调用返回递增数字的功能。