闭包:
函数在调用的时候会形成一个私有的作用域,对内部的变量起到保护的作用,这就是闭包
变量的销毁:
1.人为销毁 var a=12; a=null;
2.自然销毁 函数调用完成后,浏览器会自动销毁函数内的变量;
案例:
function fn(){
var a=5
a++
console.log(a)
}
fn()
fn()
fn()
3.闭包的优势:
1.保护变量;
2.缓存数据 (这是他的优势,也是他的劣势,函数调用完后会被销毁,我们不能使用这个变量,闭包可以不让他被销毁,但也会影响浏览器的性能)
4.闭包的种类;
1.函数式闭包;
案例:
function fn(){
var a=5;
function ff(){
a++
console.log(a)
}
ff()
}
fn()
fn()
fn()
2.对象式闭包
function fn(){
a=45
var obj={
num:a
}
console.log(obj.num)
5.函数返回值的问题:
每个函数都有一个返回值,如人为返回,return的什么就是什么,如果没有就是undefined,
6.闭包怎样缓存数据;
function fn(){
var a=23
return function(){
a++
console.log(a)
}
}
fn()
fn()
fn()