闭包

1.闭包的简介

   闭包是一种现象,一个作用域(包括全局作用域)可以访问另一个作用域(不包括全局作用域)中的变量

2.闭包的形式

   一般是一个函数中返回一个函数

3.闭包的作用

  • 外部外部可以访问函数内部成员
  • 让函数内部的成员始终存活于内存中 (函数执行完成后,函数内部的成员会被销毁,但是一旦发生闭包,就不会被销毁)

4.简单案例

 function add() {
      var a = 1;
      return function() {
             return a;
      }
 }

 console.log(add()())  //结果为a的值: 1

5.经典的闭包案例对比

  • 发生了闭包
 var name = 'zs';   // 等价于 window.name = 'zs'
       
 var obj = {
       name: 'ls',
       age: 18,
       getName: function() {
// 方法中this指向构造函数创建的实例对象
var that = this; return function() { return that.name; } } } console.log(obj.getName()()) // 结果为obj.name的值 ls
  • 未发生闭包
 var name = 'zs';   // 等价于 window.name = 'zs'
       
 var obj = {
        name: 'ls',
        age: 18,
        getName: function() {
             return function() {
        // 普通函数内部的this指向window,相当于返回的是 window.name
                    return this.name; 
                }
        }
  }

  console.log(obj.getName()())  // zs

 


更多专业前端知识,请上 【猿2048】www.mk2048.com
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值