前端开发面试必考 — — 前端开发老生常谈之闭包、对象

相信绝大多数程序猿对闭包、对象、构造函数都不陌生,毕竟在项目中运用的非常频繁的前端技能。

如果你还不了解,那你就完~蛋~啦!你可能是一个假的前端开发程序猿,哈哈哈!不要紧,今天来简单说一下闭包、对象两方面。

1、首先你要明白什么是闭包?满足闭包的条件是什么?

  • 函数嵌套函数
  • 内部函数使用外部函数的变量或参数

例1,test函数嵌套child函数,child使用外部的num变量,这就形成了闭包

function test(){
    var num = 1;
    return function child(){
        num++;
    }
}

let calcu = test();
calcu();   //2
calcu();   //3
calcu();   //4

 

2、闭包有哪些好处以及特性

特性:可以存储作用域、变量

缺点:保存的变量、参数 会永久保存,占用内存;IE上 可能会内存溢出


大家应该都知道js自带的垃圾回收机制,在局部作用域中,变量的生命周期很短,用完就删除;如果想再次利用怎么办?

闭包可以延长变量的生命周期,知道程序关闭才消失;占用内存,所以这也会带来在IE中可能会造成内存溢出

例2:具有一定功能的代码段写成一个对象,然后形成闭包,每次调用一次执行一次

function calculator(){
    var ATM = {money:100};
    return {
        add:function (){
            ATM.money += 10;
        },
        lost:function (){
            ATM.money -= 5;
        },
        get:function (){
            console.log(`${ATM.money}元`)
        }
    }
}

let sum = calculator();
sum.add();    //110
sum.lost();   //105
sum.get();    //105元

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值