JavaScript闭包与作用域如何区分函数返回与调用?

2026-05-07 11:570阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计502个文字,预计阅读时间需要3分钟。

JavaScript闭包与作用域如何区分函数返回与调用?

原文:

在你的代码中:

function fun1() { let a = 2; function fun2() { console.log(a); } return fun2; // ← 注意:这里返回的是函数引用,不是执行结果! } const b = fun1(); // ← 此时 b 被赋值为 fun2 函数本身 console.log(b); // → 输出: [Function: fun2]

你得到 [Function: fun2] 完全正确——因为 fun1() 执行后返回的是 fun2 的函数定义(即函数引用),并未自动执行它。此时 b 就是一个可调用的函数,它“记住”了 fun1 内部的 a = 2,这正是闭包的核心表现:内部函数 fun2 持有对外部词法环境(a)的引用,即使 fun1 已执行完毕。

阅读全文

本文共计502个文字,预计阅读时间需要3分钟。

JavaScript闭包与作用域如何区分函数返回与调用?

原文:

在你的代码中:

function fun1() { let a = 2; function fun2() { console.log(a); } return fun2; // ← 注意:这里返回的是函数引用,不是执行结果! } const b = fun1(); // ← 此时 b 被赋值为 fun2 函数本身 console.log(b); // → 输出: [Function: fun2]

你得到 [Function: fun2] 完全正确——因为 fun1() 执行后返回的是 fun2 的函数定义(即函数引用),并未自动执行它。此时 b 就是一个可调用的函数,它“记住”了 fun1 内部的 a = 2,这正是闭包的核心表现:内部函数 fun2 持有对外部词法环境(a)的引用,即使 fun1 已执行完毕。

阅读全文