JS中的闭包问题

时间:2017-06-07 15:31:03

标签: javascript function closures scopes

当我有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

谢谢!

2 个答案:

答案 0 :(得分:1)

行:1调用level1 fn并返回存储在别名level2中的fn temp
行:2调用temp fn并返回存储在别名level3中的fn temp2
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

答案 1 :(得分:0)

只需替换

Return level3()

使用

Return level3