sách gpt4 ai đã đi

Closures so với hàm ẩn danh (sự khác biệt?)

In lại 作者:行者123 更新时间:2023-12-03 05:29:27 28 4
mua khóa gpt4 Nike

Possible Duplicates:
What is Closures/Lambda in PHP or Javascript in layman terms?
What is the difference between a 'closure' and a 'lambda'?

嗨,

我一直无法找到一个定义来清楚地解释闭包和匿名函数之间的差异。

我看到的大多数引用文献都清楚地指出它们是不同的“事物”,但我似乎无法理解为什么。

有人可以帮我简化一下吗?这两种语言特性之间有什么具体区别?哪一种更适合什么场景?

1 Câu trả lời

匿名函数只是一个没有名称的函数;而已。闭包是一个捕获周围环境状态的函数。

匿名函数不一定需要创建闭包,并且闭包也不是仅为匿名函数创建的。

考虑这个假设的反例。考虑一种不支持闭包但支持匿名函数的语言 Foo。该语言可能无法编译以下代码或引发错误,因为“greeting”未在内部函数的范围内定义。它是匿名的这一事实无关紧要。

function outer() {
var greeting = "hello ";

(function(name) {
alert(greeting + name);
})("John Doe");
}

现在让我们考虑一种支持闭包的实际语言 - JavaScript。采用与上面相同的示例,但这次命名内部函数给出:

function outer() {
var greeting = "hello ";

(function inner(name) {
alert(greeting + name);
})("John Doe");
}

虽然内部函数不再是匿名的,但它仍然从周围环境中捕获状态。

闭包提供了非常需要的便利,否则我们将把函数的每个依赖项作为参数传递。

function outer() {
var greeting = "hello ";

(function(name, greeting) {
alert(greeting + name);
})("John Doe", greeting);
}

关于closures - 闭包与匿名函数(区别?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4912116/

28 4 0
Bài viết được đề xuất: bash - 如何将命令结果存储在 shell 变量中?
Bài viết được đề xuất: unit-testing - Assert.Fail() 被认为是不好的做法吗?
Bài viết được đề xuất: xpath - Jasper Reports 使用 Xpath 函数
Bài viết được đề xuất: Qt Quick 与 Qt 小部件
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com