chenlunyong1213 发表于 2019-7-14 21:49:39

能不能有个大神解释下为什么下面的这个程序的结果

能不能有个大神解释下为什么下面的这个程序的结果
小弟的疑问是:为什么此时的两次的result的不一样的结果
代码敬上:
        function f(){
                var a=0
                var n=0
                return function(){
                        n++
                        a++
                        alert(a)
                        alert("n is "+n)
                }
        }
        var result=f();
        result() //1
        result() //2

顺便收下膜拜的膝盖 谢谢哈!{:10_256:}

chenlunyong1213 发表于 2019-7-14 21:50:30

例行自己给自己顶下 哈哈
{:9_236:}

sukiwhip 发表于 2019-7-15 00:16:28

你把一个函数 return 出去,就形成了一个闭包。f() 的作用域被保存了出来,所以作用域中的参数就不会被垃圾回收机制删掉,a 和 n 就可以继续自增。
页: [1]
查看完整版本: 能不能有个大神解释下为什么下面的这个程序的结果