这是我参与「第五届青训营 」伴学笔记创作活动的第 15 天
如何写好JS
写代码最应关注什么:
风格、约定、效率、使用场景、设计
事件本身的槽点:
NPM 模块粒度
代码风格
代码质量/效率
实现一个切换多个交通灯状态切换的功能:
版本一:
版本二:
版本三:
版本四:
判断是否是四的幂:
版本一:一直判断是否整除
function isPowerofFour(num){
num = parseInt(num);
while(num > 1) {
if(num % 4) return false;
num /= 4;
}
return true;
}
版本二:使用位操作,位与判断最后是否是0b11,不是0直接false
function isPowerOfFour(num){
num = parseInt(num);
while(num > 1) {
if(num & Obl1) return false;
num >>>= 2 ;
}
return true;
}
版本三:o(1)时间复杂度,通过和n-1的位操作来判断
function isPowerOfFour(num){
num = parseInt(num);
return num > 0 &&
(num & (num - 1)) === 0 &&
(num & OXAAAAAAAA) === 0;
}
版本四:
function isPowerofFour(num){
num = parseInt(num).toString(2);
return /^1(?:00)*$/.test(num);
}
洗牌
sort方法进行两两交换其概率是不一样的,所以如果用sort方法洗牌会造成越小的数靠前的几率越大
分红包
1.切西瓜法: 随机拆成两部分,在大的那部分中继续拆,这样就不会存在不够分的情况了,这样分出来的红包也相对均匀,但就是因为均匀,所以肯会不够刺激
2.抽牌法:采用洗牌的算法来抽牌
引用:JavaScript 代码质量优化之路
标题:JavaScript 代码质量优化之路 - 掘金