JS函数篇,查缺补漏

62 阅读1分钟

重温红宝书第4版,查缺补漏系列,函数篇。

  1. JS重载问题,在JS里没有重载,重载指的是相同函数名,不同函数签名(签名就是传参的数量和类型),具有不同行为。
  2. 函数传参默认值,存在和let一样的行为,也有暂时性死区问题。后续定义默认值可以引用前面定义的变量名,反之不可。
  3. 函数声明存在变量提升,函数表达式不存在变量提升,并且函数表达式只有代码执行到该处才能被引用,提前引用会报错
  4. 只有函数声明才有argument,其他一律无
  5. this是根据当前执行上下文决定指向对象,包括全局变量,作用域以及作用域链,this都会指向这么一个执行环境
  6. new.target可以判断当前函数是否是实例函数,不是实例函数为undeinfd
  7. 在函数调用中,尽可能保持尾调用优化,可以提高代码执行率
  8. 闭包不光是一种行为,也是一个完整的执行上下文,可以将闭包环境变量设置为null清空闭包

另外需要额外提醒,在学习JS中,作用域,作用域链,执行上下文,原型,这几个词汇,贯穿了整个js。