1.递归函数:函数内部调用函数自己
递:自己调用自己
归:一定要有结束条件 结束田间必须写在函数的最前面
6! 6*5*4*3*2*1
n! = n * (n-1)! 结束条件 n=1 就结束了
注意:Maximum call stack size exceeded 栈溢出 是因为没有写结束条件
2. 裴波那契数列:1 1 2 3 5 8 13 21 34 55....
找规律:
当前这个数(n当前这个数的位置信息) = 前一个数(n - 1) + 前前一个数(n - 2)
n = (n-1)+(n-2) n表示的是位置信息
归: 结束条件
第二个数(n==2)和第一个数(n==1) 值都不是1
3.快速排序步骤:
(1)找数组中中间的值 splice(Math.floor(arr.length / 2),1)[0]
(2)定义两个空数组 left right var left=[] var right=[];
(3)拿数组中的元素依次和中间值作比较 比中间值晓得放入left数组 比中间值大的放入right数组
(4)将left数组和中间值及right数组 做成一个新的数组
结束条件:当数组元素值只有一个值或者空数组的时候就结束了 arr.length<=1
4.防抖
使用防抖减少时间执行的次数
防抖的原理:利用闭包函数,在事件处理函数中添加一个定时器,在定时器延迟一定的时候再执行代码,如果定时器没有走完又触发该事件 从头开始计时(清除原先的定时器,重新定义一个)
5.节流
节流减少事件触发的频率
节流的原理:利用闭包函数,在事件处理函数中添加一个定时器,延迟一定的时间再执行代码,在定时器执行过程中 时间状态是静止的 等定时器完成 时间状态解开
6.面向对象
(1)编程思想有两种
面向过程:一步一步分析实现功能 注重的是过程
面向对象:不管滚成是啥样的,只看结果 注重是结果
面向对象核心:就是对象
面向对象的组成
方法:函数,一些具有行为的动作
属性:描述性的内容 静态的
特点: 封装 继承 多态
(2)面向对象的创建
字面量创建:
缺点:只适用于单个对象的创建
使用new 关键字创建:
往空对象中添加属性和方法
缺点:代码冗余
工厂模式创建:
这个函数就是用来创建人这个类(对象)
缺点:类识别不清