您的位置:首页 > Web前端 > JavaScript

16 JS基础之--函数高级之递归和闭包

2016-11-19 00:04 375 查看
函数三大高级操作:

函数可以做参数(回调函数)

函数可以自己调用自己(递归)

函数作为返回值(闭包)

递归:函数自己调用自己。

如果想要让递归有意义,必须有跳出条件否则就是死循环。

fn();//控制台一直在打印1,死循环
function fn(){
console.log(1);
fn();
}

//案例1:打印1-10;
var num = 1;
fn();

function fn(){
console.log(num);
num++
//递归的跳出条件
if(num == 11){
return;
}
//递归
fn();
}

//案例2:累加1-100;
var num = 1;
var sum = 0;
fn();
console.log(sum);//5050
function fn(){
sum += num;
num++;
//跳出条件
if(num === 101){
return;
}
//递归
fn();
}

//案例3:累加。直接返回总和,以参数形式传递。(不需要成员变量,直接传参)
console.log(fn(100));//5050
function fn(num){
//跳出条件
if(num === 1){
return 1;
}
//递归
return num + fn(num-1);
}


闭包:函数return一个函数。

var aaa = fn();//fn的返回值
aaa();//执行fn的返回值,弹出“return返回的函数!”

以上两句也可以缩写为:fn()();

//闭包。
function fn(){
return function () {
alert("return返回的函数!");
}
}


未完待续…
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  闭包 递归 函数