JavaScript中闭包的理解

时间:2021-07-23 22:40:29

1.什么是闭包

  我个人理解闭包就是函数中嵌套函数,但是嵌套的那个函数必须是返回值,才构成闭包;

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
<script src="jquery-1.9.1.js"></script>
<meta charset="utf-8" />
</head>
<body>
<button id="btn">提交</button>
</body>
<script>
//标准的闭包
function fn(){
var i=1;
return function fnn(){
i++;
return i;
}
}
$('#btn').click(function(){
var fun=fn();
console.log(fun());//2
console.log(fun());//3
});
</script>

2.闭包的用途

  1.让外部可以读取到函数内部的变量

  2.让这些变量的值始终保存的内存中(所以要尽量少使用闭包)

思考题:

<script>  
  var name = "The Window";
  var object = {
    name : "My Object",
    getNameFunc : function(){
      return function(){
        return this.name;
      };
    }
  };
alert(object.getNameFunc()());
</script>
<script>  
  var name = "The Window";
  var object = {
    name : "My Object",
    getNameFunc : function(){
      var that = this;
      return function(){
        return that.name;
      };
    }
  }; 
 alert(object.getNameFunc()());
</script>

 第一题结果是the windos 

 第二题结果是the object