您的位置:首页 > Web前端 > JavaScript

JavaScript初探之匿名函数

2015-02-11 00:00 148 查看
//匿名函数的应用之一----用作回调函数
function invoke_and_add(a, b){
return a() + b();
}
function one(){
return 1;
}
function two(){
return 2;
}
console.log(invoke_and_add(one, two));

//直接用匿名函数来代替a,b来作为目标函数的参数
function invoke_and_add2(a,b){
return a() + b();
}
console.log(
invoke_and_add2(function(){return 1;}, function(){return 2;})
)

//eg:源代码:
function multiplyByTwo(a,b,c){
var i;
var ar = [];
for(i=0; i<3; i++){
ar[i] = arguments[i] *2;
}

return ar;
}
function addOne(a){
return a+1;
}

var myarr =  [];
myarr = multiplyByTwo(10,20,30);
for(var i = 0; i<3; i++){
myarr[i] = addOne(myarr[i])
}
myarr;

function multiplyByTwo(a,b,c,callback){
var i;
var arr=[];
for(i=0; i<3; i++){
arr[i] = callback(arguments[i]*2);
}
return arr;
}
multiplyByTwo(1,2,3, function(a){return a+1;});

//用回调函数改进后,只需要一次函数调用就可以了
function multiplyByTwo(a,b,c,callback){
var i;
var arr=[];
for(i=0; i<3; i++){
arr[i] = callback(arguments[i]*2);
}
return arr;
}
function addOne(a){
return a + 1;
}
var myarr = multiplyByTwo(1,2,3, addOne);
myarr;

//匿名函数+回调更简单了
function multiplyByTwo(a,b,c,callback){
var i;
var arr=[];
for(i=0; i<3; i++){
arr[i] = callback(arguments[i]*2);
}
return arr;
}
multiplyByTwo(1,2,3, function(a){return a+1;});

我们将函数A传递给函数B,并由B来执行A时,A就成为了一个回调函数,如果A现在是一个无名的函数,那么现在A就是一个匿名回调函数;

接下来我们看匿名函数的另一个应用----自调函数

//我们只需将匿名函数的定义放进一对括号中,然后外面再紧跟
//一对括号即可,其中,第二队括号祈祷的事“立即调用”的作用,
//同时他也是我们想匿名函数传递参数的地方
(
function (name) {
alert('hello:' + name + '!');
}
('zheng')
)

使用自调匿名函数的好处就是在于这样不会产生任何全局变量,缺点是,这样的函数是无法重复执行的(除非将它放在某个循环或者其他函数中),这也使得匿名自调用函数最适合执行一些一次性的或者初始化的任务
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息