JS 中的闭包问题

problems with closure in JS

当我有 3 级作用域时,我无法理解闭包

https://jsfiddle.net/Ar2zee/wLy8rkyL/1/

如何访问 level3 函数中的参数 "g",

var a = 10;

function level1(b) {
  var c = 1;

  function level2(f) {
    var d = 2;

    function level3(g) {
      return a + b + c + d + f + g;
    }
    return level3()
  }
  return level2;
}
var temp = level1(10);
var temp2 = temp(10);
var temp3 = temp2(10);
console.log(temp3(10)); // or level(10)();  without variable

谢谢!

第 1 行调用 level1 fn 并取回存储在别名 temp.
中的 fn level2 Line:2 调用 temp fn 并取回存储在别名 temp2.
中的 fn level3 Line:3 现在调用 temp2 fn 时执行 fn level3 返回加法运算的结果。

所以temp3不是一个函数而是一个值。

var a = 10;

function level1(b) {
  var c = 1;

  function level2(f) {
    var d = 2;

    function level3(g) {
      return a + b + c + d + f + g;
    }
    return level3;
  }
  return level2;
}
var temp = level1(10);
var temp2 = temp(10);
var temp3 = temp2(10);
console.log(temp3); // or level(10)();  without variable

只需替换

Return level3()

Return level3