这是我参与「第五届青训营 」伴学笔记创作活动的第 2 天
第二天学习了JavaScript高质量代码课程内容,我把我喜欢的内容做了一些笔记😁。
JavaScript这次内容还挺多的,我主要写了几个demo代码:
- Toggle例子用法;
- consumer例子用法;
- 交通灯过程抽象 | 例子用法
- 洗牌 发牌 生成器 | 例子用法
先看看我的demo代码笔记: 相信大家都能看懂toggle的写法!
这个consumer其实就是用tasks队列存储了所有未来要执行的任务,并通过setInterval不断执行完才停止。
交通信号灯有两个抽象:数据抽象和过程抽象,这里是过程抽象。要去理解把行为逐个拆分并抽象的过程。
洗牌和发牌,我写的代码还有个疑问:报错怎么解决?
Uncaught ReferenceError: Cannot access 'pIdx' before initialization/preview?projectId=7189171737454936079:11:8 ReferenceError: Cannot access 'pIdx' before initialization
[c[pIdx], c[i - 1]] = [c[i - 1], c[pIdx]];//交换
接下来看看我的笔记:
组件的封装,总结基本方法:
-
结构设计
-
展现效果
-
行为设计
- API(功能
- Event(控制流
重构:
-
插件化,解耦
- 将控制元素抽取成插件
- 插件与组件之间通过依赖注入方式建立联系
- 模板化 html css
-
抽象化
- 数据抽象
- 过程抽象
高阶函数:
以函数为参数,以函数为返回值,常用于函数装饰器
减少非纯函数,增加可维护性
快速幂的时间复杂度 O(logn)->想再优化,就是先算出循环次数,再直接循环
交通灯案例,数据抽象,过程抽象
求2的幂:
- num>0 && (num&num-1)===0
求4的幂(2的基础上)一个1 偶数位不能是1
num & 01010101...10 ===0
即num & 0xAAAAAAAAAAAAA===0
js 精度53位:0xAAAAAAAAAAAAA
还能用正则来做。
摸了一天了~🤔
这里是[可嘉的掘金博客](https://juejin.cn/user/378680749333096),下次见!