html 匿名函数调用,JS自定义函数(递归、回调、匿名函数)

JS自定义函数

1.递归说明:递归表示函数自己调用自己,分两种方式:直接、间接调用注意:需保证递归能够正常结束,否则进入死循环示例:

JS自定义函数

var a=0,b=0;

// 直接调用

function test1(){

console.debug(a);

if(++a<5){

test1();

}

}

// 间接调用

function test2(){

console.debug("this is test2 b="+b);

if(++b<5){

test3();

}

}

function test3(){

console.debug("this is test3");

test2();

}

先后分别电机test1、test2按钮,后台运行结果:

56925_0.png

经典案例:汉诺塔

// 汉诺塔

var n=3;

function hanoi(n){

// 将n个盘子从A柱借助B柱移动到C柱

move(n,'A','B','C');

}

function move(n,from,middle,to){

if(n==1){//如果只有一个盘子就直接移动到目标柱

console.debug(n+":"+from+"-->"+to);

}

else{

// 先将n-1个盘子从起始柱借助目标柱移动到中间柱

move(n-1,from,to,middle);

// 再将最后一个盘子从起始柱移到目标柱

console.debug(n+":"+from+"-->"+to);

// 最后将n-1个盘子从中间柱借助起始柱移到目标柱

move(n-1,middle,from,to);

}

}

演示结果:

56925_1.png

2.回调不立即执行的函数调用,满足一定条件时执行或由别的代码调用执行,只有函数名,没有括号“()”和参数用途:用于事件绑定或者函数参数事件绑定:常见的有window.οnlοad=test();表示页面加载完成后执行函数test函数参数:可观察定时器(setTimeout/setInterval)的用法函数参数举例:

function getMax(a,b){

return a>b?a:b;

}

function test1(){

doCompare(3,7,getMax);

}

function doCompare(a,b,compare){

var ret=compare(a,b);

console.debug(a+"、"+b+"中最大值为:"+ret);

}

    后台运行结果:

56925_2.png

3.匿名函数

没有函数名的函数;一般用于回调,也可能用于一次性执行的函数,执行完成后自动销毁,节省空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值