js之闭包问题

|▌冷眼眸甩不掉的悲伤 提交于 2019-11-27 16:04:26

闭包

闭包:在一个函数外部能够访问函数内部变量(局部变量,自由变量)的函数

function foo(){
    var i = 0;
    function bar(){
    var a = i++;
    console.log(a);
    }
    bar();
    }
//闭包的存在
var baz = foo();
    console.log(baz);
    baz();
    baz();

闭包可以创建命名空间,避免重名变量出错

垃圾回收是为了释放内存空间的 标记清除 引用计数
垃圾回收机制,这个博主写的挺好的,地址:https://www.cnblogs.com/andy-zcx/p/5522836.html
内存泄露 :是一块内存既不能使用了,也不能被销毁
记录一个闭包面试题:

function fun(n,o){
    console.log(o);
    return {
    fun: function(m){
    return fun(m, n);
    }};}
var b = fun(0).fun(1).fun(2).fun(3);
/*执行过程
*fun(0) n=0,o=undefined 返回{fun:function(m){return fun(m,n)}}
* m=1,n=0 fun(1,0) n=1,o=0 返回{fun:function(m){return fun(m,n)}}
* m=2,n=1 fun(2,1) n=2,o=1返回{fun:function(m){return fun(m,n)}}
* m=3,n=2 fun(3,2) n=3,o=2 返回{fun:function(m){return fun(m,n)}}
* */
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!