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();
  • 相关阅读:
    LeetCode15 3Sum
    LeetCode10 Regular Expression Matching
    LeetCode20 Valid Parentheses
    LeetCode21 Merge Two Sorted Lists
    LeetCode13 Roman to Integer
    LeetCode12 Integer to Roman
    LeetCode11 Container With Most Water
    LeetCode19 Remove Nth Node From End of List
    LeetCode14 Longest Common Prefix
    LeetCode9 Palindrome Number
  • 原文地址:https://www.cnblogs.com/yaowen/p/6917034.html
Copyright © 2011-2022 走看看