经典闭包小案例

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

猜你喜欢

经典闭包小案例

2020-02-22

varname=The Window;varobject={name:My Object,getNameFunc:function(){returnfunction(){returnthis.name;};}};  alert(object.getNameFunc()());//The Windowvarname=The Window;varobject={name:My Object,get

JavaScript中的运算符

2020-01-31

一、大小关系基本的 ,,=,=,= 我就不在此多说了,相信各位对代码感兴趣的同学都懂~在js中==则是比较两个运算数的返回值是否相等,!=则是返回值不相等而===则是比较两个运算数的返回值和数据的类型是否都相等。!==则是

在页面JS代码操作数据库

2019-08-28

!DOCTYPE htmlheadmeta http-equiv=Content-Type content=text/html; charset=utf-8 /titleJS操作数据库/titlescript language=javascript type=text/javascriptvar conn, rs;function getConnection() { conn = new

生成签名函数代码

2018-09-19

getSig: function (param) {var paramStr = [], paramStrSorted = [];for (var n in param) {paramStr.push(n);}paramStr = paramStr.sort();$(paramStr).each(function (index) {paramStrSorted.push(this + param[

js一些知识

2017-01-21

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

JavaScript中的变量

2016-08-30

一、变量的规则1.首字母必须是英文字母或者下划线2.由英文字母、数字、下划线和$组成3.不能与JavaScript关键词和保留字重名4.最好以驼峰命名法,第一个单词首字母小写,其它单词首字母大写二、变量的声明方法var 变

X
返回
顶部