MST

星途 面试题库

面试题:JavaScript 箭头函数在闭包场景下的表现及原理

在 JavaScript 中,结合箭头函数与闭包的概念,编写一个示例代码,展示箭头函数在闭包场景下的行为,并解释其背后的原理。
45.1万 热度难度
编程语言JavaScript

知识考点

AI 面试

面试题答案

一键面试

示例代码

function outer() {
    let count = 0;
    return () => {
        count++;
        return count;
    };
}

const inner = outer();
console.log(inner()); 
console.log(inner()); 

原理解释

  1. 闭包:闭包是指函数能够记住并访问其词法作用域,即使函数在其词法作用域之外被调用。在上述代码中,outer 函数返回了一个箭头函数。这个箭头函数虽然在 outer 函数外部被调用(inner 被定义在 outer 函数之外),但它仍然可以访问 outer 函数内部的变量 count。这是因为箭头函数形成了一个闭包,保存了对 outer 函数作用域的引用。
  2. 箭头函数:箭头函数没有自己的 thisargumentssupernew.target 绑定。在闭包场景下,箭头函数的优势在于它简洁的语法,并且不会干扰闭包的作用域链。它直接从包含它的作用域(这里是 outer 函数的作用域)中获取变量,就像普通函数一样,但语法更简洁。每次调用 inner,它都会访问并修改 outer 函数作用域中的 count 变量,这就是闭包与箭头函数结合的体现。