码迷,mamicode.com
首页 > 其他好文 > 详细

闭包的查找变量顺序

时间:2017-03-13 18:31:28      阅读:186      评论:0      收藏:0      [点我收藏+]

标签:logs   全局   his   this   turn   blog   bsp   ons   nbsp   

//var n=9;
function f1(){
     //n=99;
     function f2(){
        var n=999;
     console.log(n);
     }
     return f2;
   }
   var result=f1();
   result(); // 999
   //先在f2中查找有没有变量n,再在f1中查找有没有变量n,最后在全局作用域中查找有没有变量n

看下面这几个例子就知道闭包的查找顺序了(其实就是根据函数的作用域链来查找)

var name="xiu";
var obj={
    name:"xie",
    getName:function(){
        return function(){
            var name="baobao";
            return name;
        }
    }
}
alert(obj.getName()());//baobao

 

var name="xiu";
var obj={
    name:"xie",
    getName:function(){
        return function(){
            return name;
        }
    }
}
alert(obj.getName()());//xiu

 

var name="xiu";
var obj={
    name:"xie",
    getName:function(){
        return function(){
            return this.name;
        }
    }
}
alert(obj.getName()());//xiu

 

var name="xiu";
var obj={
    name:"xie",
    getName:function(){
        var that = this;
        return function(){
            return that.name;
        }
    }
}
alert(obj.getName()());//xie

 

闭包的查找变量顺序

标签:logs   全局   his   this   turn   blog   bsp   ons   nbsp   

原文地址:http://www.cnblogs.com/aixiuxiu/p/6544075.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!