参考面向对象职责划分原则。我们可以把一个函数定义只处理一个职责。
举例子说明:
我们要计算两个数相加。
分析:
从文字表述上来看,定义一个函数,计算两个输入参数相加,返回和。这是初级程序员的思维。
function sum(int a,int b){
return a + b ;
}
比较完整的分析: 我们要对两个数进行相加的运算,计算得到结果要干什么(如输出控制台、页面提示计算结果等),这才是计算的意义。
那么我们是否可以写成:
function sum( int a,int b){
int result = a + b ;
console.log(result);
}
从上面代码中,我们可以看出两个问题:1、sum函数干了两个事情,第一件事情是进行两数相加计算,第二见事情是输出到控制台,与一个函数定义只处理一个职责相违背。2、输出到控制台,如果要页面提示显示结果需求呢,那要重新写个函数或修改该函数,函数不能重用。
那么解决以上问题采用两个函数来处理:
function sum(int a, int b){
return a + b ;
}
function display(int result){
console.log(result)
}
调用: display(sum(1,2));
这样可以满足一个职责需求与 重构需求,但代码不符合链式开发思想。
满足以上需求,我们可以用回调函数。
function sum(int a, int b,callback){
int result = a + b ;
callback(rsult);
}
调用:sum(1,2,function(result){
console.log(result);
});
javascript callback编程理解
最新推荐文章于 2024-08-08 00:15:00 发布