前端面试必考 — — 闭包、对象

·  阅读 186

博主相关个人技术博客、微信公众号、视频号、设计作品集

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

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

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元
复制代码

微信公众号: 情非得已小猿猿(FrontendApe)

分类:
前端
标签:
收藏成功!
已添加到「」, 点击更改