急,在线等!一个回调函数非常纠结的问题....

zfy2442 2014-01-15 12:03:01

一个非常纠结的问题。

谁能帮我解答一下。

在a里面如何将par的返回值变成1

并且b的alert时能弹出o最新的值。








完整代码如下:

<html>
<head>
<title>回调函数(callback)</title>
<script language="javascript" type="text/javascript">
<script type="text/javascript" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<script type="text/javascript" >
function par(o){
return o;
}

function a(callback) {
return callback();
}

function b(o){
alert("我是回调函数b,传递的参数是" + o);
}

function test() {

a(function (){
b(par(0));
});
}
</script>
</head>
<body>
<button onClick=test()>click me</button>
</body>
</html>
...全文
176 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
l676331991 2014-01-15
  • 打赏
  • 举报
回复
我也非常纠结。 该怎么去理解
引用
在a里面如何将par的返回值变成1 并且b的alert时能弹出o最新的值
??

function test() { 
     
        a(function (){
            b(par(0));
        }); 
    }
//由于a是直接运行callback,因此:
function test() { 
     
        (function (){
            b(par(0));
        })();
}

//也就是说test函数相当于只运行了b(par(0));
//par(o) 直接return o;,因此par(0)相当于就是0,
//于是b(par(0))==> b(0) ==> alert("我是回调函数b,传递的参数是" + 0);

//???
??????? 好纠结的问题啊! ???????
zfy2442 2014-01-15
  • 打赏
  • 举报
回复
引用 13 楼 wwwull 的回复:
[quote=引用 12 楼 zfy2442 的回复:] [quote=引用 11 楼 wwwull 的回复:]
        function par(o) {
            return o;
        }

        function a(callback) {
            var num;
            //进行了一系列操作
            num = 1;
            return callback(num);
        }

        function b(o) {
            alert("我是回调函数b,传递的参数是" + o);
        }

        function test() {

            a(function (o) {
                b(par(o));
            });
        }
有参数为何不传?
这样应该不行吧,我试过了 [/quote] 我试过了才贴上来的,你拷出去试试[/quote] 兄弟,谢了! 去吃饭了,回来结贴给分。
泡泡鱼_ 2014-01-15
  • 打赏
  • 举报
回复
根据LZ的逻辑描述.a的结果是要交给par当成参数的,但a的结果又要交给b,那我的理解就是先交给par,然后将par的返回值交给b 那不就是:b(par(a(function(){return 1;}))) 但LZ前面又讲了:"这里我就在想在callback执行前将par的值变成成1或其它值,b再根据新取来的par值处理下面的业务. " 那不就是:b(a(function(){return par(0)})) 所以,LZ,你到底想表达什么呢?严重混乱
加达里的吉他 2014-01-15
  • 打赏
  • 举报
回复
引用 12 楼 zfy2442 的回复:
[quote=引用 11 楼 wwwull 的回复:]
        function par(o) {
            return o;
        }

        function a(callback) {
            var num;
            //进行了一系列操作
            num = 1;
            return callback(num);
        }

        function b(o) {
            alert("我是回调函数b,传递的参数是" + o);
        }

        function test() {

            a(function (o) {
                b(par(o));
            });
        }
有参数为何不传?
这样应该不行吧,我试过了 [/quote] 我试过了才贴上来的,你拷出去试试
zfy2442 2014-01-15
  • 打赏
  • 举报
回复
引用 11 楼 wwwull 的回复:
        function par(o) {
            return o;
        }

        function a(callback) {
            var num;
            //进行了一系列操作
            num = 1;
            return callback(num);
        }

        function b(o) {
            alert("我是回调函数b,传递的参数是" + o);
        }

        function test() {

            a(function (o) {
                b(par(o));
            });
        }
有参数为何不传?
这样应该不行吧,我试过了
加达里的吉他 2014-01-15
  • 打赏
  • 举报
回复
        function par(o) {
            return o;
        }

        function a(callback) {
            var num;
            //进行了一系列操作
            num = 1;
            return callback(num);
        }

        function b(o) {
            alert("我是回调函数b,传递的参数是" + o);
        }

        function test() {

            a(function (o) {
                b(par(o));
            });
        }
有参数为何不传?
zfy2442 2014-01-15
  • 打赏
  • 举报
回复
引用 9 楼 zfy2442 的回复:

function par(o){
        return o;
    }
    //业务逻辑处理函数
    function a(callback) {
        //根据不同业务处理将返回值赋值给par    
        return callback(); 
    } 
 
    //根据业务逻辑a的处理结果进行其它操作
    function b(o){
        //业务处理表达式
        if(o==0){
          //表达式......
        }else if(o==1)
        {
          //表达式......
        }
        else if(o==2)
        {
          //表达式......
        }
        alert("我是回调函数b,传递的参数是" + o);
    }
 


    //某事件函数
    function test() { 
     
        a(function (){
            b(par(0));
        }); 
    }

这样一说大家明白了不?
zfy2442 2014-01-15
  • 打赏
  • 举报
回复

function par(o){
        return o;
    }
    //业务逻辑处理函数
    function a(callback) {
        //根据不同业务处理将返回值赋值给par    
        return callback(); 
    } 
 
    //根据业务逻辑a的处理结果进行其它操作
    function b(o){
        //业务处理表达式
        if(o==0){
          //表达式......
        }else if(o==1)
        {
          //表达式......
        }
        else if(o==2)
        {
          //表达式......
        }
        alert("我是回调函数b,传递的参数是" + o);
    }
 


    //某事件函数
    function test() { 
     
        a(function (){
            b(par(0));
        }); 
    }

zhjdg 2014-01-15
  • 打赏
  • 举报
回复
宝贝晚安吧! 能不能写个有意义的代码。 a,b我不知道你要干什么?
zfy2442 2014-01-15
  • 打赏
  • 举报
回复
因为a有其它的业务逻辑,这只是个demo。我就省掉了其它的表达式,所有在test的时候还是有必要执行的a的。 在这里我就在想在allback执行前将par的值变成成1或其它值,b再根据新取来的par值处理下面的业务.
zfy2442 2014-01-15
  • 打赏
  • 举报
回复
引用 1 楼 l676331991 的回复:
我也非常纠结。 该怎么去理解
引用
在a里面如何将par的返回值变成1 并且b的alert时能弹出o最新的值
??

function test() { 
     
        a(function (){
            b(par(0));
        }); 
    }
//由于a是直接运行callback,因此:
function test() { 
     
        (function (){
            b(par(0));
        })();
}

//也就是说test函数相当于只运行了b(par(0));
//par(o) 直接return o;,因此par(0)相当于就是0,
//于是b(par(0))==> b(0) ==> alert("我是回调函数b,传递的参数是" + 0);

//???
??????? 好纠结的问题啊! ???????
因为a有其它的业务逻辑,这只是个demo。我就省掉了其它的表达式,所有在test的时候还是有必要执行的a的。 在这里我就在想在allback执行前将par的值变成成1,b再根据新取来的par值处理下面的业务.
notlikeGaoShou 2014-01-15
  • 打赏
  • 举报
回复
楼主你要干神马
泡泡鱼_ 2014-01-15
  • 打赏
  • 举报
回复
function par(o){ 
        return o+1;//这样??如果真是这样,那这叫啥问题呀..... 
    } 
  
    function a(callback) {     
        return callback();  
    }  
  
    function b(o){  
        alert("我是回调函数b,传递的参数是" + o); 
    } 
  
    function test() {  
      
        a(function (){ 
            b(par(0)); 
        });  
    }
zfy2442 2014-01-15
  • 打赏
  • 举报
回复
引用 1 楼 l676331991 的回复:
我也非常纠结。 该怎么去理解
引用
在a里面如何将par的返回值变成1 并且b的alert时能弹出o最新的值
??

function test() { 
     
        a(function (){
            b(par(0));
        }); 
    }
//由于a是直接运行callback,因此:
function test() { 
     
        (function (){
            b(par(0));
        })();
}

//也就是说test函数相当于只运行了b(par(0));
//par(o) 直接return o;,因此par(0)相当于就是0,
//于是b(par(0))==> b(0) ==> alert("我是回调函数b,传递的参数是" + 0);

//???
??????? 好纠结的问题啊! ???????
我的意思是在执行回调函数前,将par的值变成1.后面执行回调程序b的时候alert能弹出最新的par值.而不是最初在test函数给个赋par的值0.
泡泡鱼_ 2014-01-15
  • 打赏
  • 举报
回复
完全不知道LZ想表达的意思,你自己传个0进去,想变成1出来? return o+1????

87,901

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧