有人能帮我吗
请问 当 var func=outer(); 时func变量 的值为30吗。
感觉func()是再一次调用outer()函数的感觉,那 localVal变量就重新初始化了呀,怎么就与左边的不同?
请问 当 var func=outer(); 时func变量 的值为30吗。
感觉func()是再一次调用outer()函数的感觉,那 localVal变量就重新初始化了呀,怎么就与左边的不同?
2015-05-29
右边 这个函数 从下 往上看
var func = outer();
这里 func 复制为 函数 outer的执行结果,那在往上看,函数 outer 执行后的 结果是什么呢
function outer(){ var localVal = 30; return function(){ return localVal; } }
一个函数的的结果 如果没有返回值的话 默认是 'undefined',如果有返回值的话 就是返回 return 后面语句的执行结果。所以outer() 应该返回以下结果
function(){ return localVal; }
可以通过命令行工具 来验证 输入 func 返回的就是这个了
然后我们看到 返回的结果是一个匿名函数(没有名字的函数)。好了 这个函数运行后返回的是 localVal 这个值。可以理解为 是从他的'父函数'那里得到的。那么为什么可以获得 '父函数'里的变量呢,这就牵扯到闭包了,闭包这个课程里说的有,可以再仔细看看或者查阅一下资料
举报