在学习JavaScript中有一个匿名函数,它像函数但是又和经常遇到的函数不大一样。
匿名函数就是你不知道它的名字,
普通函数和匿名函数对比
普通函数:
function box(){
var name='普通函数';
}
alert(box());
匿名函数:
<pre name="code" class="javascript"> function(){
alert('匿名函数');
}();
调用匿名函数:
想要调用匿名函数也很简单,在匿名函数函数后面加一个括号就可以,这种调用叫自执行调用。
function(){
alert('执行匿名函数');
}();
匿名函数和闭包:
所谓的闭包函数可以理解为可以访问一个函数的变量的函数。它是一种方法嵌套,这么做可以大大减少代码量,使代码看上去清晰。
举例:比如我想要得到小于5的数。
解决方法:
<span style="font-size:14px;">//使用匿名函数解决循环取值问题
function box() {
var arr = [];//定义一个数组
for (i = 0; i < 5; i++) { //循环(条件)
arr[i]=function(){ //数组等于匿名函数,这里就是加了一个匿名函数来执行循环
return i; //
}
}
return arr;//返回数组
}
var b = box();
for (i = 0; i < 5; i++) {
alert(b[i]());
}</span>
闭包函数:
function box() { //这个函数在前后都没有影响,因为他是被调用的。
var arr = [];//数组
for (var i = 0; i < 5; i++) {
arr[i] = function (num) {
//num is here
return function () {//使用闭包,将匿名函数中的变量储存到内存中去
return num;
}
}(i);//这里可以去掉括号,执行自执行。因为将值赋给了一个变量
}
return arr;
}
var b = box();
for (i = 0; i < 5; i++) {
alert(b[i]());
}
闭包函数有一个特性就是将返回结果储存到内存中,