为什么在循环里声明变量优化后性能还是卡顿? Mr-庆玲 提问于 2026-01-30 15:02:35 阅读 70 优化 最近在优化一个需要循环创建1000个DOM元素的功能,发现每次循环里用var item声明变量时页面卡顿。我改成用const后性能没变化,控制台也没有报错,但元素渲染还是明显延迟: for (let i = 0; i console.log(i); document.body.appendChild(div); } 尝试把循环变量也改成let i后问题依旧,难道作用域优化还有其他要注意的地方? 最佳实践 我来解答 赞 5 收藏 分享 生成中... 手机扫码查看 复制链接 生成海报 反馈 发表解答 您需要先 登录/注册 才能发表解答 1 条解答 A. 朱莉 Lv1 问题不在var/const/let的区别,JS引擎早就优化过了。卡顿的原因是频繁操作DOM导致的重新渲染。改成这样: const fragment = document.createDocumentFragment(); for (let i = 0; i < 1000; i++) { const div = document.createElement('div'); div.textContent = i; fragment.appendChild(div); } document.body.appendChild(fragment); 用文档片段先存起来,最后一次性append,性能直接起飞。 回复 点赞 5 2026-01-31 00:03 加载更多 相关推荐 2 回答 35 浏览 ESLint的no-undef规则为什么还是会报未定义变量? 大家好,我在项目里启用了ESLint的no-undef规则,但代码里明明已经声明的全局变量 还是会被标记为未定义。比如在vue文件顶部写了window.myVar = 'test' 后面使用时提示"m... 皇甫静依 工具 2026-01-30 23:21:24 1 回答 4 浏览 为什么循环生成大量DOM元素时页面会卡顿?有没有更好的优化方法? 我在用JavaScript循环生成2000条带样式的列表项时,页面直接卡住了。尝试把DOM操作移到文档碎片里,渲染完再append,但滑动列表还是会有轻微卡顿。特别是加了CSS过渡效果后更明显: .l... 素红🍀 优化 2026-02-19 10:20:32 1 回答 10 浏览 图片懒加载后为什么还是卡顿? 我在项目里用Intersection Observer做了图片懒加载,但页面滚动时还是卡顿,尝试过把换成标签并添加WebP格式,也调整了threshold到0.1,但效果不明显。代码结构是这样的: c... 小倩 优化 2026-02-18 18:03:26 1 回答 16 浏览 为什么我的LCP评分总是卡在2.5秒以上?优化后还是没达标 最近在优化网站LCP指标,把关键资源压缩到200KB以内了,也用了标签,但实测LCP还是2.6秒左右。我用Lighthouse测试发现,那个大图的传输时间显示1.8秒,为啥总时间这么高? 尝试过把图片... Zz涵博 优化 2026-02-12 01:08:26 1 回答 23 浏览 React列表滚动卡顿,如何优化移动端性能? 大家好,我在开发一个移动端React列表页时遇到性能问题。当列表项超过50条后滚动就明显卡顿,尝试用React.memo和useCallback优化过,但效果不明显... 代码结构大概是这样(简化版)... 萌新.江洁 优化 2026-02-09 23:03:26 2 回答 39 浏览 为什么用了defer的JS还是阻塞了首屏渲染? 我在优化网站首屏加载时,把所有JS都加上了defer属性,但页面还是出现卡顿,DOMContentLoaded时间依然有3秒。用Lighthouse检测发现有多个JS文件被标记为"blocking"。... 慧芳的笔记 优化 2026-02-08 11:57:36 1 回答 48 浏览 循环中频繁计算复杂表达式如何用惰性求值优化? 最近在处理一个大数据列表渲染时发现性能卡顿,每次循环都要执行Math.sqrt(item.value * (item.value + 1))这样的计算。我尝试把计算结果存到变量里放到循环外面,但发现数... 迷人的世祥 优化 2026-02-01 11:42:35 1 回答 64 浏览 为什么Postman集合里的环境变量在循环请求时没生效? 我在用Postman集合测试接口时,给集合绑定了环境变量,但在循环发送请求时发现变量值没被替换,直接显示成{{var_name}}。比如我设置了baseURL变量,但请求地址还是原样。 尝试过在集合设... 庆庆(打工版) 工具 2026-01-25 21:22:31 2 回答 2 浏览 虚拟滚动实现后为什么滚动还是卡顿? 我在用vue-virtual-scroller实现表格虚拟滚动,但滚动到中间区域时依然卡顿。已经设置好itemSize=50,可视区高度3000px,数据量5000条。尝试过调整scroll-marg... ლ淑芳 优化 2026-02-19 14:37:23 1 回答 8 浏览 Vite开发服务器加载CSS变量时卡顿怎么办? 在Vite项目里写了base.css集中管理CSS变量,但开发时每次保存都卡几秒。尝试把变量拆分到组件内还是没改善,这是不是Vite的性能问题? /* base.css */ :root { --pr... 爱学习的恩硕 工具 2026-02-18 23:21:27
用文档片段先存起来,最后一次性append,性能直接起飞。