微信公众号「技术漫谈」。现代 JavaScript 教程中国负责人 https://zh.javascript.info 获得徽章 17
今日笔记,工资到手1w1,加上取了公积金4500,合计1w5左右。三个月房租6500,还京东金条9000多。。余-1k左右。盼着把3-5月份拖欠的工资发了。(因为没有上班,所以每个月只有2200的70%,合计4500)。。。。就可以余下3k
心里小开心盘算着下半年会慢慢好起来的
刚才下班的时候,看见微信上我爹给我发消息,说给他转5500。上个月也是这个时候转了4700。说发了工资再转给我,一直没转。
学一门编程语言的顺序
一阶段-上手
* 基础语法:工程结构 、变量/常量/类型、顺序、循环、选择、方法/函数、数据结构、异常、错误、崩溃、恢复
* 最小案例:基础语法 + 语言特性的案例。语言特性比如:并发、函数式、鲁棒性
* 常用库:HTTP、JSON
二阶段-熟练
* 编码规范
* 常用工具集: 调试、测试、部署、监控
* 流行框架: Web、数据库、异步任务
三阶段-进阶
* 执行原理:runtime、虚拟机
* 内存管理:内存分配、垃圾回收
* 基础实现:数据结构、常用包/类、并发、系统调用
#知识点记录# 今天看了 React.PureComponent 的源码,理解了一下浅比较和深比较。PureComponent 是对 shouldComponentUpdate 的浅比较实现,为什么是浅比较?这就是在性能和效果上做的取舍。
对象浅比较就是比较引用,引用相同,则为 true。深比较是比较值,即使是两个引用不同的对象,他们的值也会被一个一个拿出来进行比较。
在 React 中,在状态也就是 state 发生变化时,会对虚拟 DOM 进行 diff,然后重建对应节点。React 中始终贯穿数据不可变的思想,进行 diff 的时候,拿的是两个数据进行比对,它们的 reference 是不同的。如果进行深比较,会把对应的值拿出来,一一比对值。
而对于浅比较,在源码实现中是用的 Object.is(),这个方法只适用于比较基本类型,而对于对象这种引用类型,如果对象的引用不同就为 false。而 React 里面虚拟 DOM 的 diff,数据的引用就是不同的。所以 PureComponent 进行浅比较,state 里面的对象的变化它比较不出来,也就不会阻止 render。管他什么几层嵌套对象,只要是对象就比较不出来。因为引用不同。
所以 PureComponent ,只能比较出 state、props 里基本数据类型的变化,对象的变化比不出来,也就无法阻止对应的 render。所以,在实际开发中,使用 PureComponent,要注意对应组件里的 state 的数据结构是什么样的,否则达不到通过 PureComponent 进行性能优化的目的。
鄙人拙见,如有纰漏,烦请指出,十分感谢!
看大家最喜欢发原生JS的文章,我也来冒个泡。能不能说出下面输出的顺序,顺便考考你对JS异步究竟掌握没?(也是月底文章预告哈)
节流和防抖应用场景
节流是在一定时间内只能触发一次。防抖是一定时间内多次触发只有最后一次生效。
节流多应用在节省性能的地方,比如页面滚动/鼠标滑动,这些事件触发都是毫秒级的,所以为了节省性能,可以用节流函数控制一定时间内只触发一次,但是肉眼无感。
防抖可以多用在模糊搜索时的keyup事件,按钮的点击事件等,是为了防止事件在一定时间内多次触发导致错误。
下一页