笔记:
- for-in 可以枚举任何对象的属性名。循环体每次运行,prop变量被赋值为object的一个属性名,直到所有的属性遍历完成才返回。
- 循环的可选因素:每次迭代处理的事务,迭代的次数。
- 减少迭代的次数-达夫设备
- if-else适用于判断两个离散值或几个不同的值域。当判断多于两个离散值时,switch是更佳的选择。
- 递归,可能会遇到调用栈的大小限制。
- 递归有直接递归,隐式递归。
- 迭代-缓存之前的。
小结:
- for,while,do-while,循环性能相当,没有一种循环明显快于或者慢于其他类型。
- 避免使用for-in,除非要遍历一个属性数量未知的对象。
- 改善性能:减少每次迭代的运算量和减少循环迭代次数。
- 判断条件多,用查找表比if-else,switch更快。
- 浏览器调用栈递归算法,栈溢出可能会导致其他代码出错。
- 栈溢出,可以用迭代或者memoization来避免。