我正在研究JS和闭包的概念。
在下面的代码中,内部子函数查找 num 和 num1 的值。接下来,解释器沿着作用域链向上搜索它们。它在 main() 中查找,但没有看到它们,因此它继续到 main 的参数,在声明中没有看到它们,但它们在调用中。这就是它们的来源。这是我对这段代码如何工作的理解,对吗?
谢谢
function main() {
return function child(num, num1) {
console.log(num + num1);
}
}
const result = main();
result(2, 4); // return 6
最佳答案
这里没有结束。
您正在做的是创建一个返回另一个函数
的函数
。
在你的行中:
const result = main();
您将此内部函数
存储在变量
内。然后你在行中使用两个参数来调用它:
result(2, 4);
演示:
请检查这个演示,以及内部函数如何存储在变量中,然后调用。
function main() {
return function child(num, num1) {
console.log(num + num1);
}
}
//Store inner function in a variable
let innerFn = main();
console.log(innerFn);
console.log(typeof innerFn);
//Then call this function
innerFn();
innerFn(10, 4);
关于javascript - 需要澄清 JS 闭包和作用域链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51709157/