javascript - 需要澄清 JS 闭包和作用域链

标签 javascript function scope closures

我正在研究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/

相关文章:

function - Swift - 无法通过从另一个函数捕获来引用本地函数

javascript - Angular JS | OrderBy 不是数组

python - 函数后面的括号是什么意思

javascript - 使用作用域变量注入(inject) html 时,$scope.$apply 不起作用 - AngularJs

sql - 具有相关子查询的 MySql 范围问题

javascript - Chartjs 工具提示 anchor 在条形图上的位置

javascript - 如何从 svg 中删除变换?

javascript - mapbox - 如何在多边形内生成随机坐标

javascript - 在javascript中使用按位>>进行颜色提取

r - 在 R : turn list of functions into one big function (element-wise sum of functions)