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