浏览器性能优化

IIFE惰性函数

有一些函数在运行时需要进行一些判断,但是这个判断只需要执行一次,代码一旦运行判断结果就不会改变,这样的函数称为惰性函数,可以使用下面的手段来进行优化

javascript 复制代码
// 优化前,每次调用都需要进行一次判断
function doThing() {
	if(globalThis === 'window') {
		// do something in browser
	} else if(globalThis === 'global') {
		// do something in nodejs
	}
}

// 这样优化过后doThing就是一个已经进行过判断的函数,不必每次执行时都判断
doThing = (() => {
	if(globalThis === 'window') {
		return function() {
			// do something in browser
		}
	} else if(globalThis === 'global') {
		return function() {
			// do something in nodejs
		}
	}
})()

冻结对象

在Vue中有一些数据仅仅只做展示而不回去修改它,这些数据我们就可以冻结起来,被冻结的对象讲无法进行任何修改

javascript 复制代码
// 加入我们拿到了一个10万条数据的数据,这样做会导致10w条数据全部被创建为响应式对象,十分消耗性能
this.list = getList();

// 如果只是展示数据,那么可是将对象冻结,Vue做了相关的优化,不会将被冻结的对象创建为响应式
// 被冻结的对象会变为只读属性,无法进行任何修改
this.list = Object.freeze(getList());

// 通过Object.isFrozen() 可以判断一个对象是否被冻结
let flag = Object.isForzen(this.list);
相关推荐
懒人村杂货铺8 分钟前
微前端QianKun的使用以及坑点问题
前端
qq_3665775111 分钟前
Vue3创建项目,只能localhost访问问题处理
前端·javascript·vue.js
5***o50016 分钟前
JavaScript云原生
开发语言·javascript·云原生
N***738521 分钟前
JavaScript物联网案例
开发语言·javascript·物联网
一个处女座的程序猿O(∩_∩)O30 分钟前
React Router 路由模式详解:HashRouter vs BrowserRouter
前端·react.js·前端框架
Caster_Z1 小时前
WinServer安装NPM(Nginx Proxy Manager),并设置反向代理和开启https
前端·nginx·npm
顾安r1 小时前
11.22 脚本 手机termux项目分析(bash)
前端·python·stm32·flask·bash
慧慧吖@1 小时前
Zustand
开发语言·javascript·ecmascript
2***B4491 小时前
JavaScript语音识别案例
开发语言·javascript·语音识别
是你的小橘呀2 小时前
JavaScript 原型链解密:原来 proto 和 prototype 这么好懂
前端·javascript·前端框架