【发布时间】:2020-10-27 07:07:27
【问题描述】:
对 Javascript 来说真的很陌生。此代码取自 MDN。
// global scope
var e = 10;
function sum(a){
return function sum2(b){
return function sum3(c){
// outer functions scope
return function sum4(d){
// local scope
return a + b + c + d + e;
}
}
}
}
var s = sum(1);
var s1 = s(2);
var s2 = s1(3);
var s3 = s2(4);
console.log(s3) //log 20
当我尝试输入不同的变量名(下面的 EX)时,它们似乎不起作用,我不明白所有内容如何链接在一起以吐出答案 20。
// global scope
var e = 10;
function sum(a){
return function sum2(b){
return function sum3(c){
// outer functions scope
return function sum4(d){
// local scope
return a + b + c + d + e;
}
}
}
}
var w = sum(1);
var x = s(2);
var y = s1(3);
var z = s2(4);
console.log(s3) //log 20
当我把它改成这个时它也不起作用。控制台告诉我 sa 没有定义
// global scope
var e = 10;
function sm(a){
return function sa(b){
return function sb(c){
// outer functions scope
return function sc(d){
// local scope
return a + b + c + d + e;
}
}
}
}
var s = sm(1);
var s1 = sa(2);
var s2 = sb(3);
var s3 = sc(4);
console.log(sc) //log 20
我可以继续抛出更多无效的示例。有人,请帮助我理解第一个示例的工作原理。
【问题讨论】:
-
没有所有变量,它看起来像这样:
var s3 = sum(1)(2)(3)(4);
标签: javascript variables scope closures