Chap 3 函數(shù)
1.函數(shù)定義包括函數(shù)聲明和函數(shù)表達(dá)式,函數(shù)聲明能力提升,可以使用在定義之前。
2.函數(shù)參數(shù)支持可選(?),必須是最后一個參數(shù);支持默認(rèn)值(參數(shù)類型后加=),必須是最后一個;支持可變參數(shù)(...)必須是最后一個。
3.函數(shù)支持重載,因為強(qiáng)語言類型的特性。而且重載函數(shù)支持特殊重載簽名,其參數(shù)必須為字符串,可以根據(jù)字符串的內(nèi)容重載,但是必須有一個未特殊簽名的函數(shù)放到最后,例如:
interface Document{
create(tag:"div"):HTMLDIVEle;
create(tag:"span"):HTMLSPANEle;
create(tag:string):HTMLEle;
}
4.var定義的變量的作用域在函數(shù)內(nèi),let和const是塊級作用域,const不能修改。
5.IIFE(立即執(zhí)行函數(shù)表達(dá)式)可以實現(xiàn)塊級作用域名。例如:
var bar = 0;
(function(){
var foo=0
})();
class中的私有變量就是通過IIFE實現(xiàn)的。
- 函數(shù)支持泛型。
7.箭頭函數(shù)會自帶this變量,因此在setTimeout等函數(shù)中執(zhí)行是,this引用屬性不變。
8.異步編程:
- 傳統(tǒng)的方法是回調(diào)函數(shù),調(diào)用回調(diào)函數(shù)的函數(shù)優(yōu)先級別高,稱之為高階函數(shù)
- 回調(diào)函數(shù)具有回調(diào)陷阱,不利于理解和閱讀
- Promise用于解決回調(diào)陷阱,其實現(xiàn)的庫常用為:Q。Promise有三種狀態(tài):
- pending:初始化
- fulfilled:異步操作成功的狀態(tài)
- rejected:異步操作失敗的狀態(tài)
使用時先聲明一個promise,然后調(diào)用then和catch方法分別處理fulfilled和rejected狀態(tài)的處理動作。
9.關(guān)于前后端模板:
- 前端:handlebar
- 后端:velocity/freemarker/Thymeleaf等