Chap 3 函数
1.函数定义包括函数声明和函数表达式,函数声明能力提升,可以使用在定义之前。
2.函数参数支持可选(?),必须是最后一个参数;支持默认值(参数类型后加=),必须是最后一个;支持可变参数(…)必须是最后一个。
3.函数支持重载,因为强语言类型的特性。而且重载函数支持特殊重载签名,其参数必须为字符串,可以根据字符串的内容重载,但是必须有一个未特殊签名的函数放到最后,例如:
interface Document{
create(tag:"div"):HTMLDIVEle;
create(tag:"span"):HTMLSPANEle;
create(tag:string):HTMLEle;
}
4.var定义的变量的作用域在函数内,let和const是块级作用域,const不能修改。
5.IIFE(立即执行函数表达式)可以实现块级作用域名。例如:
var bar = 0;
(function(){
var foo=0
})();
class中的私有变量就是通过IIFE实现的。
- 函数支持泛型。
7.箭头函数会自带this变量,因此在setTimeout等函数中执行是,this引用属性不变。
8.异步编程:
- 传统的方法是回调函数,调用回调函数的函数优先级别高,称之为高阶函数
- 回调函数具有回调陷阱,不利于理解和阅读
- Promise用于解决回调陷阱,其实现的库常用为:Q。Promise有三种状态:
- pending:初始化
- fulfilled:异步操作成功的状态
- rejected:异步操作失败的状态
使用时先声明一个promise,然后调用then和catch方法分别处理fulfilled和rejected状态的处理动作。
9.关于前后端模板:
- 前端:handlebar
- 后端:velocity/freemarker/Thymeleaf等