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中闭包和递归的概念和案例)