如何在闭包中访问孙子变量

How to access grand-child's variable in a closure

提问人:Soumya Sagnik Khanda 提问时间:1/22/2023 更新时间:1/22/2023 访问量:31

问:

我想在下面给出的代码中从 p 中检索 a 和 b 的值。我还想从 p 运行函数 z。我该如何实现?

function x() {
    var a = 10;
    return function y() {
        var b = 20;
        return function z() {
            console.log(a, b);
        }
    }
}
const p = x();

我是JS的新手。

JavaScript 函数 闭包

评论

0赞 Christian Vincenzo Traina 1/22/2023
要运行,您可以编写 ,或者等效。除非返回它们,否则无法获取 和 值z()p()x()()ab
0赞 Christian Vincenzo Traina 1/22/2023
我没有看到结构,它实际上是 or ,因为是一个返回函数的函数p()()x()()()x
0赞 Soumya Sagnik Khanda 1/22/2023
@Christian Vincenzo Traina p() 只用文字打印函数 z,而不是 a 和 b 的值。

答:

0赞 Adrish 1/22/2023 #1

function x() {
    var a = 10;
    return function y() {
        var b = 20;
        return function z() {
            console.log(a,b)
        }
    }
}
// get function z
const result = x()();
console.log(result)
// get a,b 
result()

调用 x 返回函数 y,调用 y 返回函数 z,即 x()();
通过调用函数 z,您可以获得 a,b(返回或控制台),即 x()()();