匿名函数:
1.含义:在定义函数时,不指定函数名的函数
2.何时使用:(1)绝大多数回调函数,都用匿名函数
(2)避免使用全局变量时,都用匿名函数自调
回调函数:
1.含义:我们自己定义的函数,但是自己不调用,而是交给别的函数,由别的函数自调用!
例如:arr.sort(function(a,b){return a - b})
()中的function,虽然是我们自己定义,但是不是我们自己调用,因为我们不知道何时调用, 调用了几次,每次传的什么参数;()中 的function,在sort函数的内部,根据sort函数的需 要自动调用,自动传参
2.作用:节约内存
3.原理:
a.有名称的函数,函数名是一个变量,引用着函数对象。即使函数用完了,今后不用了,也 因为变量名的引用,导致有名称的函数无法 释放,占用内存,浪费内存!
b.匿名函数,没有函数名!就没有变量引用着。所以用完就被释放了
4.匿名函数自调
(1)问题:全局变量及其不靠谱:a.将来多人协作开发时,所有人的程序,最终会放在一起运行
b.如果刚好两人的代码中都操作了同一个全局变量就会造成全 局污染!结果两人的功能都无法正常执行
c.结论:今后所有项目中,禁止使用全局变量
(2)解决:今后所有功能的JS代码,都要用匿名函数自调用包裹起来。
做法: //创建一个临时函数
(function(){
功能的原代码
})();//立刻调用
强调:匿名函数自调之前的语句和匿名函数自调结束时,必须加分号“ ;”
好处:i.如果功能中用到个别变量,也会被圈在匿名函数内,不会成为全局变量
ii.功能的源代码,不需要做任何改变