1. 程式人生 > >站在C語言的角度說JS的回撥

站在C語言的角度說JS的回撥

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<script type="text/javascript">
/***************   回撥**********************************/
             function A(callback){
                
                alert('先執行A');
                B(callback);
                alert('執行到A底部');
            }
            
            function B(callback){  
                    alert('執行B');
                    var m = 1;  
                    var n = 2;                    
                    console.log(callback(m,n));  
            }

            function C(m,n){  
                alert('執行C');
                alert( m+n);
                return m+n;  
            }  
            
            A(C);  
          //記憶體塊分配:
         // 一. 棧頂分配給A,執行A函式。這個時候作為C函式作為引數不做解析沒有獲得記憶體塊。
         // 二. 棧頂分配給B,執行B,然後此時末尾呼叫了C,此時C獲得記憶體塊,相當於回頭訪問了本應該在A的時候就要執行的C。
         // 順序是A到B然後到C。

/**************************************************************/
        // 一.普通呼叫順序:a>c>b
            function A(){
                alert('先執行A');
                var res=C(1,2);
                
                B(res);
                alert('執行到A底部');
            }
            
            function B(callback){  
                    alert('執行B');
                    alert(callback);  
            }

            function C(m,n){  
                alert('執行C');
                // alert( m+n);
                return m+n;  
            }  

            A();  
</script>
<body>

</body>
</html>

本人對回撥的一點拙見,如果不對的話請高手們留言,指出我的不足。如果是對的,歡迎轉載。