時(shí)間:2019/11/3
4).高階函數(shù)(對(duì)其他函數(shù)進(jìn)行操作的函數(shù),它接收函數(shù)作為參數(shù)或?qū)⒑瘮?shù)作為返回值輸出)
5).閉包(一個(gè)作用域可以訪問(wèn)另一個(gè)函數(shù)的局部變量,該局部變量所在的函數(shù)形成閉包)
兩種形式:一個(gè)函數(shù)使用另一個(gè)函數(shù)中的局部變量或在全局使用函數(shù)中的局部變量;
// 閉包主要作用:延長(zhǎng)變量的作用范圍
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(); // 創(chuàng)建了fn的引用f,使得fn執(zhí)行完后num變量沒(méi)有被立即銷(xiāo)毀,容易造成內(nèi)存泄漏,需手動(dòng)釋放引用(引用賦值為null)
f(); // 10
f(); // 11
f(); // 12
f = null;
var f = fn();
f(); // 10

總結(jié).jpg
6).遞歸
1.遞歸函數(shù)(一個(gè)函數(shù)在內(nèi)部可以調(diào)用其本身),遞歸中必須加退出條件(return)。
案例:
1.遞歸求1~n的階乘;
2.遞歸求斐波那契數(shù)列;
3.遞歸遍歷多層Json格式數(shù)據(jù)。
2.深拷貝和淺拷貝
1).淺拷貝只是拷貝一層(簡(jiǎn)單數(shù)據(jù)類(lèi)型),更深層次對(duì)象級(jí)別的只拷貝引用(復(fù)雜數(shù)據(jù)類(lèi)型拷貝地址);
2).深拷貝拷貝多層,每一級(jí)別的數(shù)據(jù)都會(huì)拷貝;
3).Object.assign(target, ...sources) ES6新增方法實(shí)現(xiàn)淺拷貝
4).封裝函數(shù)實(shí)現(xiàn)深拷貝