var compose=function(a,b){
return function(){
return a+b
}
}
var g=1
var h=1
var f=compose(g,h)
console.log(f) // function () {return a + b;}
console.log(f()) // 2
Q:第一个打印的结果不是function () { return 3};
A:当调用compose时,创建了一个执行环境E1,该执行环境中,有a=1,b=1;此时的环境相当于:
a=1,b=1;
function(){return a+b}
因为返回的函数没有立即在compose内调用,所以a=1,b=1没有传入函数中
Q:第二个打印结果是 2?
A:f();调用function(){return a+b},创建这个匿名函数的环境E2,先在这个环境中找a,b.但是没有。进入它的上级环境,是E1,E1环境中有a=1,b=1。所以结果是2.
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。