重温红宝书第4版,查缺补漏系列,函数篇。
- JS重载问题,在JS里没有重载,重载指的是相同函数名,不同函数签名(签名就是传参的数量和类型),具有不同行为。
- 函数传参默认值,存在和let一样的行为,也有暂时性死区问题。后续定义默认值可以引用前面定义的变量名,反之不可。
- 函数声明存在变量提升,函数表达式不存在变量提升,并且函数表达式只有代码执行到该处才能被引用,提前引用会报错
- 只有函数声明才有argument,其他一律无
- this是根据当前执行上下文决定指向对象,包括全局变量,作用域以及作用域链,this都会指向这么一个执行环境
- new.target可以判断当前函数是否是实例函数,不是实例函数为undeinfd
- 在函数调用中,尽可能保持尾调用优化,可以提高代码执行率
- 闭包不光是一种行为,也是一个完整的执行上下文,可以将闭包环境变量设置为null清空闭包
另外需要额外提醒,在学习JS中,作用域,作用域链,执行上下文,原型,这几个词汇,贯穿了整个js。