【发布时间】:2019-05-20 12:11:39
【问题描述】:
我正在通过阅读“Eloquent Javascript”来学习 javascript,但对第 3 章(函数)中的“闭包”部分感到困惑。
在前面的部分中,我了解了箭头函数,以及如何将它们用作匿名函数。我最初的想法是,这是一个匿名函数示例,我还不熟悉。
特别是,我对“() => local”对/返回的作用感到困惑。
function wrapValue(n) {
let local = n;
return () => local;
}
let wrap1 = wrapValue(1);
let wrap2 = wrapValue(2);
console.log(wrap1());
// → 1
console.log(wrap2());
// → 2
以下是该章节的链接: Eloquent Javascript - Ch. 3 "Functions"
提前致谢!
【问题讨论】:
-
只是一个函数,调用时返回变量
local。闭包的重点是变量local设置在外部函数中,但即使在wrapValue返回之后,它仍然在返回函数的范围内。 -
看起来像
const wrap1 = 1;的复杂方式。 -
@RobG - 不复杂,它是“雄辩的”:D
-
@MarkMeyer 哦,好的,我明白了。所以这只是简单地返回通过将 n 分配给本地给出的任何内容,然后返回本地。确实很纠结!哈哈 那我为什么不直接使用“返回本地”呢?
-
@Tucker 你可以,但它不会演示在 wrap 函数返回后如何仍然可以访问变量。
标签: javascript return closures