时间:2019/11/3
4).高阶函数(对其他函数进行操作的函数,它接收函数作为参数或将函数作为返回值输出)
5).闭包(一个作用域可以访问另一个函数的局部变量,该局部变量所在的函数形成闭包)
两种形式:一个函数使用另一个函数中的局部变量或在全局使用函数中的局部变量;
// 闭包主要作用:延长变量的作用范围
1.
function fn() {
var num = 10;
return function() {
console.log(num);
}
}
var f = fn();
f(); // 10
2.
function fn() {
var num = 10;
return function() {
console.log(num);
num++;
}
}
var f = fn(); // 创建了fn的引用f,使得fn执行完后num变量没有被立即销毁,容易造成内存泄漏,需手动释放引用(引用赋值为null)
f(); // 10
f(); // 11
f(); // 12
f = null;
var f = fn();
f(); // 10
总结.jpg
6).递归
1.递归函数(一个函数在内部可以调用其本身),递归中必须加退出条件(return)。
案例:
1.递归求1~n的阶乘;
2.递归求斐波那契数列;
3.递归遍历多层Json格式数据。
2.深拷贝和浅拷贝
1).浅拷贝只是拷贝一层(简单数据类型),更深层次对象级别的只拷贝引用(复杂数据类型拷贝地址);
2).深拷贝拷贝多层,每一级别的数据都会拷贝;
3).Object.assign(target, ...sources) ES6新增方法实现浅拷贝
4).封装函数实现深拷贝