javascript中函数做为参数的调用
2015-02-06 15:51
399 查看
请看示例:
function Map(){
var obj = {};
this.put = function(key, value){
obj[key] = value;
}
this.eachMap = function(fn){
for(var attr in obj){
fn(attr, obj[attr]);
}
}
}
var m = new Map();
m.put('01', 'abc');
m.put('02', 1024);
m.put('03', true);
m.put('04', 0);
m.put('05', false);
m.eachMap(function(key, value){
alert(key + " : " + value);
});
这段代码执行的顺序是:从上往下顺序解释执行,这是JS的规定。
这里主要说明一下m.eachMap()中函数做为参数是怎么传递并执行的:
step1:执行到m.eachMap这个方法的时候,JS会去找对应的this.eachMap这个方法;
step2:找到this.eachMap这个方法,会根据函数体内的语句顺序执行;
step3:当执行到fn(attr, obj[attr]);的时候,他会返回到for语句执行;注意在返回for语句执行之前,attr是没有值的;从for语句返回之后,attr的值就有了,为‘01’,而obj[attr]的值也有了,为‘abc’;
step4:接着,fn(attr, obj[attr]);会返回到m.eachMap这个方法的参数函数中,即
function(key, value){
alert(key + " : " + value);
}
attr替换key,obj[attr]替换value,并执行alert语句,输出。
step5:继续执行for循环,重复执行step4,并输出,直到结束。
function Map(){
var obj = {};
this.put = function(key, value){
obj[key] = value;
}
this.eachMap = function(fn){
for(var attr in obj){
fn(attr, obj[attr]);
}
}
}
var m = new Map();
m.put('01', 'abc');
m.put('02', 1024);
m.put('03', true);
m.put('04', 0);
m.put('05', false);
m.eachMap(function(key, value){
alert(key + " : " + value);
});
这段代码执行的顺序是:从上往下顺序解释执行,这是JS的规定。
这里主要说明一下m.eachMap()中函数做为参数是怎么传递并执行的:
step1:执行到m.eachMap这个方法的时候,JS会去找对应的this.eachMap这个方法;
step2:找到this.eachMap这个方法,会根据函数体内的语句顺序执行;
step3:当执行到fn(attr, obj[attr]);的时候,他会返回到for语句执行;注意在返回for语句执行之前,attr是没有值的;从for语句返回之后,attr的值就有了,为‘01’,而obj[attr]的值也有了,为‘abc’;
step4:接着,fn(attr, obj[attr]);会返回到m.eachMap这个方法的参数函数中,即
function(key, value){
alert(key + " : " + value);
}
attr替换key,obj[attr]替换value,并执行alert语句,输出。
step5:继续执行for循环,重复执行step4,并输出,直到结束。
相关文章推荐
- JavaScript 通过字符串参数(函数名),调用对应的函数
- javascript中函数作为参数调用的方法
- javascript调用带参数函数
- JavaScript-函数的调用,无参函数和有参函数,参数的的传递
- JavaScript中函数参数this及函数调用
- JavaScript-4.3函数的参数和返回值,参数数目不确定的函数调用---ShinePans
- <a href="javascript:"里面调用的函数的参数this无效
- JavaScript Arguments 实现可变参数的函数,以及函数的递归调用
- JavaScript学习笔记第一天——定义函数以及参数调用
- 【JavaScript】a标签onclick传递参数不对,A标签调用js函数写法总结
- javascript中函数作为参数调用的方法
- 【JavaScript】函数的参数传递和递归调用
- (九)JavaScript之【JS函数(定义、参数、调用、【闭包】、call(),apply())】[较深,胆小勿进]
- 把建立的对象做为另外一个函数的参数带入调用
- JavaScript创建一个add()函数可实现,可变参数和递归调用
- Javascript 对象方式实现命名参数调用(下):自动包装偏函数
- JavaScript 通过字符串参数(函数名),调用对应的函数
- javascript关于setTimeout如何调用带参数的函数
- JavaScript调用cs中带参数的函数
- Oracle不支持在select语句中调用自定义函数时使用自定义类型作参数?