关于js中闭包的理解

时间:2022-05-09 22:44:35

  1、以前很不理解js中闭包的概念及使用,下面来看一下

   

  function foo() {
  var a = 123;
  var b = 456;
  return function () {
  return a;
    }
  }
  var fn = foo();

  上面的代码只能访问 a和b,但是不能修改,这是js中闭包的技术之一

  

  function foo() {
  var a = 123;
  var b = 456;
  return {
  get_a: function () {
  return a;
  },
  set_a: function (value) {
  a = value;
  },
  get_b: function () {
    return b;
  },
  set_b: function (value) {
  b = value;
      }
    }
  }

  var o = foo();
  console.log(o.get_a());
  console.log(o.get_b());

  o.set_a("abc");
  console.log(o.get_a());

  2、根据上面的输出结果可以知道将return值写成对象的形式,就可以对函数内的数据进行修改了,这就是js中闭包的第二项技术

  3、通过上面的代码可以看到闭包的好处之一使你的代码更安全,而且更有利于维护

  4、上面的代码都是对闭包的初级理解和体验,以后会对闭包的实际应用做更多的介绍