闭包
闭包的概念: 函数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));
最后分享一句超级演说家崔万志说过的话:抱怨没有用,一切靠自己!