这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天
写代码的时候不能仅仅通过代码风格来评判这个代码写的好不好,而是要结合场景和实际需求来进行评判
leftPad事件
1.快速幂算法只有在数据量很大的时候才有意义 2.当代码性能优化意义不大时我们可以从可读性的角度出发,考虑怎么将代码优化
如何去平衡代码的可读性、封装性、效能
eg:
1.交通灯状态切换
版本一,将数据抽象出来做成状态列表;
版本二,将过程抽象(过程抽象的时候可以考虑一下过程抽象的代码是不是很复杂,有没有更简单的方法)
版本三,异步加函数式
2.判断是否是4的幂
版本一,循环除以4,如果最后该值等于1,则说明是4的幂,如果在循环中不能被4整除,则说明不是4的幂;
版本二,位移操作,循环像左移动两位,判断最后两位是否等于0,如果等于0就继续像左位移,如果最后为1,则说明是4的幂
版本三,(都转化为二进制的情况下,如果只有一个1,则是2的幂,再加上有偶数个0则是4的幂;js的整数位应该是53位,所以应该有13个A)判断它是否既是2的幂又是4的幂
版本四,将其转化为二进制的字符串,用正则表达式匹配,看它是否满足1后面偶数个0这样的形式
3.洗牌
sort方法进行两两交换其概率是不一样的,所以如果用sort方法洗牌会造成越小的数靠前的几率越大
4.分红包
1.切西瓜法:
随机拆成两部分,在大的那部分中继续拆,这样就不会存在不够分的情况了,这样分出来的红包也相对均匀,但就是因为均匀,所以肯会不够刺激
2.抽牌法:采用洗牌的算法来抽牌