Python 闭包与JavaScript闭包的实现差异

2025-02-08T18:24:17+08:00 | 1分钟阅读 | 更新于 2025-02-08T18:24:17+08:00

Macro Zhao

Python 闭包与JavaScript闭包的实现差异

Python 闭包

  1. 如何定义

在一个函数内部定义另一个函数,内部函数引用外部函数的变量。

def outer_function(text):
    def inner_function():
        print(text)
    return inner_function

closure = outer_function('Hello, Python!')
closure()  # Output: Hello, Python!
  1. 参数代入

nonlocal关键字。

def outer_function(count):
    def inner_function():
        nonlocal count
        count += 1
        print(count)
    return inner_function

closure = outer_function(10)
closure()  # Output: 11
  1. 如何使用全局关键字global该关键字允许您从函数内部访问和更新全局变量。这使得无需编写类就可以在函数内管理值。
count = 0

def outer_function():
    global count
    count += 1
    print(count)

outer_function()  # Output: 1
outer_function()  # Output: 2

JavaScript 闭包

  1. 如何定义

在一个函数内部定义另一个函数,内部函数引用外部函数的变量。这也可以通过将箭头函数或者函数直接写进return来实现。

function outerFunction(text) {
    function innerFunction() {
        console.log(text);
    }
    return innerFunction;
}

var closure = outerFunction('Hello, JavaScript!');
closure();  // Output: Hello, JavaScript!
  1. 参数代入

Pythonnonlocal需要关键字,而 JavaScript 则不需要。const使用时重新代入值。

function outerFunction(count) {
    function innerFunction() {
        count++;
        console.log(count);
    }
    return innerFunction;
}

var closure = outerFunction(10);
closure();  // Output: 11
  1. 定义一个计数变量

在外部函数中定义一个变量并在闭包内使用它。

function outerFunction(initialCount) {
    let count = initialCount;

    function innerFunction() {
        count++;
        console.log(count);
    }

    return innerFunction;
}

let closure = outerFunction(10);
closure();  // Output: 11

© 2011 - 2025 Macro Zhao的分享站

关于我

如遇到加载502错误,请尝试刷新😄

Hi,欢迎访问 Macro Zhao 的博客。Macro Zhao(或 Macro)是我在互联网上经常使用的名字。

我是一个热衷于技术探索和分享的IT工程师,在这里我会记录分享一些关于技术、工作和生活上的事情。

我的CSDN博客:
https://macro-zhao.blog.csdn.net/

欢迎你通过评论或者邮件与我交流。
Mail Me

推荐好玩(You'll Like)
  • AI 动·画
    • 这是一款有趣·免费的能让您画的画中的角色动起来的AI工具。
    • 支持几十种动作生成。
我的项目(My Projects)
  • 爱学习网

  • 小乙日语App

    • 这是一个帮助日语学习者学习日语的App。
      (当然初衷也是为了自用😄)
    • 界面干净,简洁,漂亮!
    • 其中包含 N1 + N2 的全部单词和语法。
    • 不需注册,更不需要订阅!完全免费!
  • 小乙日文阅读器

    • 词汇不够?照样能读日语名著!
    • 越读积累越多,积跬步致千里!
    • 哪里不会点哪里!妈妈再也不担心我读不了原版读物了!
赞助我(Sponsor Me)

如果你喜欢我的作品或者发现它们对你有所帮助,可以考虑给我买一杯咖啡 ☕️。这将激励我在未来创作和分享更多的项目和技术。🦾

👉 请我喝一杯咖啡

If you like my works or find them helpful, please consider buying me a cup of coffee ☕️. It inspires me to create and share more projects in the future. 🦾

👉 Buy me a coffee