Published onOctober 21, 2025事件循环PromisesetTimeoutEvent-loop事件循环是浏览器协调任务执行的机制,因为浏览器是单线程的,为了避免耗时任务卡住主线程,所以它把任务分成了 4 类 1. 同步任务:需要立即执行的任务,会阻塞后续代码,直到其完成,可能会阻塞主线程,比如 console.log() 2. 异步任务:不需要立即执行的任务,执行完成后需要通知主线程的,异步任务又分为宏任务和微任务。 3. 宏任务:优先级更低的异步任务,不会阻塞主线程。包括整体 脚本的加...
Published onOctober 21, 2025异步编程Promiseasync/await在 JavaScript 中,存在一些异步操作,需要等浏览器执行完成之后,再告诉主线程,我们再去做后续的操作 之前为了实现这一点,我们会用回调函数的方式,拿到异步的执行结果,并做后续处理 但如果我们在某一个回调函数中,又依赖其他回调函数带过来的参数,就会存在回调地狱(混乱的嵌套),且难以维护和控制状态,由此 es6 引入了 Promise 的概念。一个 Promise 本身只有三种状态,pendi...
Published onOctober 21, 2025浏览器缓存localStoragesessionStoragecookieIndexedDBCachelocalStorage:浏览器前端本地缓存,当页面关闭的时候,不会自动清空,可以存 5MB,且共享给其他标签一起使用 sessionStorage:会话级别的浏览器前端本地缓存,当会话关闭的时候(tab 页关闭),自动清空,且不共享给其他标签 cookie:前后端都可以使用的缓存,一般用来存储鉴权信息,或者用于分析用户习惯的相关数据,可以通过多个属性控制它(比如允许使用的接口域名/path 控制...
Published onOctober 21, 2025节流防抖throttledebounceJavaScript什么是节流/防抖?防抖是延迟执行最后一次,节流是固定频率执行 1. 防抖:当用户在某一个时间段内,连续触发时,只在最后实际执行一次。比如我给表单的提交按钮,加了 1s 防抖,则用户如果在 1s 内点了 10 次,我也只在最后触发一次回调事件 2. 节流:当用户在某一个时间段内,连续触发时,限定它的触发频率。比如我给 scroll 监听事件加了 1s 节流,则用户在页面滚动过程中,不管他滚动的多快(...
Published onOctober 21, 2025重排重绘layoutpaintCSS浏览器的重绘重排,指的是当 DOM 和 CSSOM 被修改后,可能会重新触发浏览器渲染的关键路径和。 1. 重排:当 DOM 元素的变化影响了它的几何属性(大小,位置,布局),浏览器需要重新计算元素的几何属性,并重新构建文档树的全部或部分过程 2. 重绘:当 DOM 元素属性的变化不影响它在文档流中的位置和大小时,浏览器需要重新绘制元素外观。 重排必定导致重绘,因为布局变化后需要重新绘制。而...