这是我参与「第五届青训营 」伴学笔记创作活动的第 5 天
从Leftpad看编码操作规范
一段代码如下:
function isUnit() {
return m[0] == 1 && m[1] == 0 && m[2] == 0 && m[3] == 1 && m[4] == 1 && m[5] == 1
}
这是一段看上去很笨的代码,实际上大部分人会使用循环的方法去代替一个个确认
但这段代码是真实存在的,存在与渲染引擎之中,这是为了最大程度的减少运算负载和空间占用,尤其是这个可能是每秒要访问60次这样的高频率代码,也就只能使用这种笨方法。
Leftpad事件
事件本身的槽点: npm模块,下架之后很多库不能用
- NPM模块粒度
- 代码风格
- 代码质量/效率
改良后的改码,代码更加简洁,效率更高
使用repeat内置方法大大提升了性能,但实际上只是在较大字符串上提升比较明显,但leftpad只是对较小的字符串作用,所以这些性能优化的意义也不是很大,主要提升代码可读性。
实现交通灯状态的切换
将交通灯的状态抽象化
数据抽象封装
也可以用之前学习的过程抽象方法进行撰写,具有更好的拓展性,但可能会过于复杂。
求4的幂
复杂度为O(1),第一个条件num大于1,将num转化为二进制后减1会使二进制数的1减少一个,二进制偶数中不止1个1时就不是4的幂了。同时,4的幂的二进制数为“1+偶数个0”。
洗牌算法
利用生成器进行洗牌
小结
本章JavaScript的学习内容有点超出预料,主要是一些思想和一些实际案例,也算是一个提醒,就算是处理前端算法的相关思想还是要一直牢记,在实际案例中不断改善代码的可读性和效率。