站在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>
本人對回撥的一點拙見,如果不對的話請高手們留言,指出我的不足。如果是對的,歡迎轉載。