手把手教你写jQuery之点击计数(外篇1)
在这节我们将用闭包
闭包的概念就是如果子函数有指针指向外部函数的局部变量,那么这个变量的内存不会被释放!
上面说的,如果你没学过c ,你是无法理解的!
行,先打住这个话题,我们先看最简单的! 一点点写!
这个版本1 ,
上面的代码很简单,相信大家可以看懂,但是操作的都是同一个count
而我们 要让每一个按钮,操作不同的计数!
所以我们要修改下!
这个版本就可以很轻松的满足我们的需求,但是没有用到闭包,这不符合我们本节要讲的内容!
我们改成了上面的一种形式!
上面就是用了闭包特性,丫的,小白真的难以理解!
所以我打算从头讲起!
抛开上面的,我们 先看一个普通的函数!
这是一个普通的函数,当函数执行完毕后, 局部变量i 就会被释放掉,也就是说,用完了,就释放 i变量所对应的内存空间!
普通的函数的形参啦,局部变量啦,当执行的时候,首先会在栈区间开辟一块区间用来保存!(这个时候也就是压栈的操作)
当函数执行完毕后,就释放掉栈空间的内容
以上说了这么都就一句话, i用完,就没有了!就被干掉了
当一个函数内有子函数时,且子函数用到了 外部函数的局部变量,
那么假如 子函数不释放内存, 那么外部函数的局部变量也不能释放内存,因为子函数要用啊,
外部函数的局部变量释放内存了,子函数咋使用?
螺丝啰嗦的讲了这么多,我们还是要回到我们的代码!
子函数持有了外部函数中的局部变量 count ,
此时,事件监听函数(子函数不释放) 这个外部函数(dealClick函数) 的局部变量count ,就不会被释放!
上面代码的意思就是 每次执行dealClick 函数的时候,就会声明一个 count 局部变量供子函数使用
这样你每个点击监听函数都有了,自己的 局部变量,这样就不会冲突了!