一、闭包
- 闭包的概念:
函数A中有一个函数B,函数B中可以访问到函数A中定义的变量或者是数据,此时形成了闭包。 - 闭包的作用:
缓存数据,延长作用域链。 - 优点和缺点:缓存数据。
- 函数模式的闭包
function f1(){
var num=1;
//函数的声明
function f2(){
console.log(num);
};
f2();
}
f1(); //1 - 对象模式的闭包
函数中有一个对象。
function f3(){
var num=10;
var obj={
age:num
};
console.log(obj.age);//10
}
f3();
##3. 总结
- 如果想要缓存数据,就把这个数据放在外层函数和里层函数的中间位置。
- 闭包的作用:缓存数据,缺点也是缓存数据,是的数据没有被及时的释放
- 局部变量是在函数中,函数使用完毕之后,局部变量就会被释放。
- 闭包之后,里面的局部变量是使用作用域链会被延长。
- 函数模式的闭包
二、沙箱
沙箱就是一个环境,在一个虚拟的环境中做实验,结果和真实世界一样,但是不会影响真实世界的结果。
var num=100;
(function(){
var num=1;
console.log(num);//1
}());
console.log(num);//100
三、递归
函数中调用函数自己,此时就是递归,递归要有结束条件。
function getSum(x){
if(x==1) return 1;
return x+getSum(x-1);
}
getSum(5);