js中闭包和递归的概念和案例

闭包

闭包的概念: 函数A中,有一个函数B,函数B中可以访问函数A中定义的变量或者数据,此时就形成了闭包(这句话暂时不严谨)
闭包的模式: 函数模式的闭包,对象模式的闭包
闭包的作用:缓存数据,延长作用域链
闭包的优点和缺点:缓存数据
函数模式闭包案例:
function f1() { var num = 10; function f2() { console.log(num); } f2(); } f1();

对象模式闭包:
function f3() { var num = 10; var obj = { age:num }; console.log(obj.age); } f3();

递归
递归:函数自己调用自己,此时就是递归,递归一定要有结束的条件
var i = 0; function f1() { i++; if (i<5) { f1(); } console.log("这是递归输出,函数自己调用自己!"); } f1();

递归案例:
递归实现求N个数字的和 function getSum(x) { if (x==1) { return 1; } return x + getSum(x-1); } console.log(getSum(100)); }())

求一个数字各个数上的数字的和 function getEverSum(x) { if (x<10) { return x; } return x%10 +getEverSum(parseInt(x/10)); } console.log(getEverSum(520));

求斐波那契数列 function getFib(x) { if (x==1 || x==2) { return 1; } return getFib(x-1)+getFib(x-2); } console.log(getFib(12));

【js中闭包和递归的概念和案例】最后分享一句超级演说家崔万志说过的话:抱怨没有用,一切靠自己!

    推荐阅读