我爱编程

JS闭包

2018-04-01  本文已影响0人  eleorc

参考文献
阮一峰老师的这篇文章解释的很清楚。摘录要点如下。

1 背景知识

1.1 变量的作用域

变量的作用域无非就是两种:全局变量和局部变量。
Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量。

1.2 如何从外部读取局部变量

在函数的内部,再定义一个函数

  function f1(){

    var n=999;

    function f2(){
      alert(n); 
    }

    return f2;

  }

  var result=f1();

  result(); // 999

2 JS闭包概念

闭包就是能够读取其他函数内部变量的函数

3 闭包的用途

  • 读取函数内部的变量
  • 让这些变量的值始终保持在内存中
  • 暴露接口,隐藏实现

代码举例

闭包函数中关键字this的使用

  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
上一篇下一篇

猜你喜欢

热点阅读