经典闭包小案例

JavaScript

 var name = "The Window";

var object = {

name : "My Object",

getNameFunc : function(){

    return function(){

        return this.name;

        };

    }

};  alert(object.getNameFunc()());//The Window

 

var name = "The Window";

var object = {

name : "My Object",

getNameFunc : function(){

    var that = this;

    return function(){

        return that.name;

        };

    }

  };

  alert(object.getNameFunc()());//My Object

 

function fun(n,o) {

  console.log(o)

  return {

    fun:function(m){

      return fun(m,n);

    }

  };

}

var a = fun(0);  a.fun(1);  a.fun(2);  a.fun(3);//undefined,?,?,?

var b = fun(0).fun(1).fun(2).fun(3);//undefined,?,?,?

var c = fun(0).fun(1);  c.fun(2);  c.fun(3);//undefined,?,?,?

 

//问:三行a,b,c的输出分别是什么?

这是一道非常典型的JS闭包问题。其中嵌套了三层fun函数,搞清楚每层fun的函数是那个fun函数尤为重要。

 

//答案:

//a: undefined,0,0,0

 

//b: undefined,0,1,2

 

//c: undefined,0,1,1

相关内容推荐

js一些知识

一、词法结构 1、区分大小写 2、注意 // 单行 3、字面量(直接量literal) 12//数字 5.8 // 小数 hello 'hello' true /js/gi//正则 null //空 {x:1,y:2} [1,2,3,4] 4、标示符(变量)和保留字 5、分号可以省略但是

返回
顶部