函数(一)函数&尾递归
会讲述以下内容 1. 普通函数 2. this的指向问题 3. 箭头函数 4. 尾递归 5. 蹦床函数的实现 6. 尾递归优化 7. 设置必填参数 8. 构造函数和类的区别
普通函数
函数有变量提升
有函数作用域。
在运行时指定 this 的指向
函数的 this 是可以改变的
从ES6开始,函数有尾调用优化
函数的调用 与 this指向
以函数的形式调用(this指向 window)
以方法的形式调用,那么this指向 调用函数的对象
以call的形式调用
call比apply快很多
以构造函数调用
如果在构造函数中 有 return对象,那么new的实例 就是 return 的对象
如果 return 的不是对象。 那么 new的实例 就是 this
箭头函数
箭头函数()=>{}
,关于简洁或省略部分不写。
注意点:
箭头函数的的this,就是定义时所在的对象,且不可改变
由于this指向问题,所以:箭头函数不能当作构造函数,不能使用new命令
箭头函数没有arguments,需要手动使用 rest参数代替 (
...args
)箭头函数不能用作 Generator 函数
尾递归
// 该段大部分剪辑自阮一峰老师的博客
尾递归就是:函数最后单纯return函数
ES6出现的尾递归,可以将复杂度O(n)的调用记录,换为复杂度O(1)的调用记录
尾递归的重要性
蹦床函数,解决递归栈溢出问题,将函数变成循环
尾递归的优化:
设置必填参数
利用参数默认值,可以指定某一个参数不得省略,如果省略就抛出一个错误。
函数 和 类的区别
类没有变量提升
类的所有方法,都不可枚举
类的的所有方法,没有原型对象
prototype
类不能直接使用,必须使用 new 调用。
类内部启用严格模式
Last updated