zoukankan      html  css  js  c++  java
  • jquery10 闭包示例

    o = {
        a:1,
        o:{
            b:2,
            f : function(){
                alert(o.a);//1
                alert(o.b);//undefined   
            }
        }
    }
    o.o.f();
    
    
    o = {
        a:7,
        o : {
            a:1,
            o:{
                b:2,
                f : function(){
                    alert(o.a);//7
                    alert(o.b);//undefined   
                }
            }
        }
    }
    o.o.o.f();
    
    o = {//这个o加到window闭包里面去了
        a:7,
        o : {//这个o没有
            a:1,
            o:{//这个o没有
                b:2,
                f : function(){
                    alert(o.a);//7
                    alert(o.b);//undefined   
                }
            }
        }
    }
    o.o.o.f();
    
    
    f = function(){
        return  {
            a:1,
            o:{
                b:2,
                f : function(){
                    alert(o.a);//o is not defined ,说明o不存在
                    alert(o.b);//o is not defined ,说明o不存在
                }
            }
        }
    }
    f().o.f();
    
    f = function(){
        o = {a:7,b:8}
        return  {
            a:1,
            o:{
                b:2,
                f : function(){
                    alert(o.a);//7
                    alert(o.b);//8   return的东西不在闭包里面
                }
            }
        }
    }
    f().o.f();
    
    f = function(){
        o= {//这个o加到函数闭包里面去了
            a:1,
            o:{//这个o没有
                b:2,
                f : function(){
                    alert(o.a);//1
                    alert(o.b);//undefined
                }
            }
        }
        return o;
    }
    f().o.f();
    
    
    f = function(){
        return  {
            a:1,
            o:{
                b:2,
                f : function(){
                    o = {a:3,b:4}
                    alert(o.a);//3
                    alert(o.b);//4
                }
            }
        }
    }
    f().o.f();
    
    
    f = function(){
        o = {a:5,b:6}
        return  function(){
            a=1,
            o={
                b:2,
                f : function(){
                    alert(o.a);//unudefined    以函数作为闭包层级,一层一层的向上查找,找到了就不找了
                    alert(o.b);//2
                }
            }
            return o;
        }
    }
    f()().f();
    
    
    f = function(){
        o = {a:5,b:6}
        return  function(){
            a=1,
            b={
                b:2,
                f : function(){
                    alert(o.a);//5
                    alert(o.b);//6
                }
            }
            return b;
        }
    }
    f()().f();
    f = function(){
        
        return  function(){
            o = {a:15,b:16}//加到闭包
            a=1,
            b={//加到闭包
                o:{a:11,b:12},   //没有加到闭包
                b:2,
                f : function(){
                    alert(o.a);//15
                    alert(o.b);//16
                }
            }
            return b;
        }
    }
    f()().f();
  • 相关阅读:
    JSP源码、改写Servlet为JSP、查看转译成为Servlet的文件、JSP字符编码设置
    使用Tomcat部署应用
    缓冲与缓存
    过滤器及请求封装器实现字符编码
    过滤器与请求封装器实现字符替换
    过滤器
    与请求相关的监听器
    区块链简介
    https协议简介
    http协议简介
  • 原文地址:https://www.cnblogs.com/yaowen/p/6917034.html
Copyright © 2011-2022 走看看