回调函数 与 函数闭包

回调函数

1.什么是回调函数?

作为参数的函数就是回调函数!

例如:有两个函数A,B如果函数A作为B的一个参数传入B的话,那么我们就称A是回调函数。

//声明一个函数
function fn1(a){
    a()
}
//再声明一个函数作为fn1函数的参数传入
function fn2(){
    alert('我是一个回调函数')
}
fn1(fn2)

例子中的fn2就被称为一个回调函数

2.回调函数的用途

一般是某个行为或某件事之后的收尾处理,或者说对于不同行为结果,给出不同响应。 

闭包【返回一个函数的函数】 

1.为什么会产生闭包

函数作用域中声明的变量,在全局作用域下是无法进行访问的,但有时候我们又需要在全局中去访问函数内的变量,这个时候我们就需要用到闭包。

2.什么是闭包

在函数A中,再定义一个函数a,用子函数a去控制父函数A中的变量,调用父函数A时,将子函数a返回给调用者,这就称之为闭包。

//定义一个父函数
function A(){
    var i = 1
    //定义一个子函数输出父函数中的变量i
    return  function a(){
        console.log(i)
    }
}
A()() //此处调用一次A函数返回的是一个函数a所以需要在调用一次,所以有两次调用()

3.闭包的用途 

 1).可以让父级作用域访问到函数中的变量

2).可以让这些变量的值始终保持在内存中

//声明一个函数
function boss(){
    var n = 100
    //创建一个子函数,接收一个新的参数
    function child(newV){
    //对传入的参数进行判断,如果没传入新参数返回原来的n值,传入则返回新值
        n = (newV == undefined) ? n : newV
        return n
    }
    return child
}
var myFun = boss()

 

4.闭包需要注意的事项

因为闭包会将这些变量一直存储在内存中,这样对内存消耗极大,影响网页的性能,在IE中可能还会造成内存泄漏。

解决这个问题的方法:

如将当前变量的值设置为“null”,将变量的引用解除,当垃圾回收启动时,会自动对这些值为“null”的变量回收。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值