相信绝大多数程序猿对闭包、对象、构造函数都不陌生,毕竟在项目中运用的非常频繁的前端技能。
如果你还不了解,那你就完~蛋~啦!你可能是一个假的前端开发程序猿,哈哈哈!不要紧,今天来简单说一下闭包、对象两方面。
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元