<script>
var fibonacci = function () {
var a = 1;
var b = 1;
return function () {
var temp = b;
b = a + b;
a = temp;
return b;
}
}
var fibInstance = fibonacci()
alert(fibInstance())
alert(fibInstance())
alert(fibInstance())
</script>
如上代码,浏览器弹出的的是2 3 5,刚开始很好奇,因为fibInstance是fibonacci函数中返回的函数,里面的a和b应该是脱离了fibonacci函数的作用域,应该打印出来未定义的值。
我猜测会不会是返回函数时会将这个函数的上文中的变量隐式的保存在这个函数中,而且是可以被该函数修改的。
希望有大佬指正解惑。