delete 关键字用于从对象中删除属性。关于这个 delete 关键字的性能,已经有一些争议。你可以在 此处 和 [此处](stackoverflow.com/questions/4… propertieses-in-js-in-v8/44008788) 中查看它们。这个问题有望在未来的更新中得到解决。As an alternative, you can simply to set the unwanted property as undefined.
另一种选择是,你可以直接将将不想要的属性设置为 undefined。
你应该知道 JavaScript 是同步的,也是单线程的。但是在某些情况下,可能会花费大量的时间来执行一段代码。在本质上同步意味着,这段代码将阻止其他代码语句的运行,直到它完成执行,这会降低代码的整体性能。但其实,我们可以通过实现异步代码来避免这种情况。异步代码以前是以回调的形式编写的,但是在 ES6 中引入了一种处理异步代码的新风格。这种新风格被称为 promises。你可以在 MDN 的官方文档 中了解更多关于回调和 promises 的信息。等等…JavaScript默认是同步的,也是单线程的。为什么在单一线程上运行,还能运行异步代码?这是很多人感到困惑的地方。这要归功于浏览器外壳下运行的 JavaScript 引擎。JavaScript 引擎是执行 JavaScript 代码的计算机程序或解释器。JavaScript 引擎可以用多种语言编写。例如,支持 Chrome 浏览器的 V8 引擎是用 c++ 编写的,而支持 Firefox 浏览器的 SpiderMonkey 引擎是用 C 和 c++ 编写的。这些 JavaScript 引擎可以在后台处理任务。根据 Brian,调用栈识别 Web API 的函数,并将它们交给浏览器处理。一旦浏览器处理完成这些任务,它们将返回并作为回调推到堆栈上。你有时可能想知道,Node.js 在没有浏览器帮助的情况下是如何运行的。事实上,为 Chrome 提供动力的 V8 引擎同样也为 Node.js 提供动力。下面是一篇由 Salil 撰写的非常棒的博客文章:Node.js真的是单线程吗,它解释了节点生态系统上的这个过程。
12、使用代码分割
如果你有使用 Google Light House 的经验,你就会熟悉一个叫做“first contentful paint”的度量。它是 Lighthouse 报告的性能部分跟踪的六个指标之一。First Contentful Paint(FCP)测量用户导航到页面后浏览器渲染 DOM 第一个内容所花费的时间。页面上的图像、非白色 获得更高 FCP 分数的最好方法之一是使用代码分割。代码分割是一种在开始时只向用户发送必要模块的技术。减少最初传输的有效内容的大小,会显著地影响 FCP 得分。流行的模块打包工具(如 webpack)提供了代码分割功能。你可以在原生 ES 模块的帮助下,加载各个模块。你可以阅读更多关于原生 ES 模块的 详细信息。
13、使用异步 async 和延迟 defer
在现代网站中,脚本比 HTML 更密集,它们的尺寸更大,消耗更多的处理时间。默认情况下,浏览器必须等待脚本下载、执行,然后处理页面的其余部分。庞大的脚本可能会阻塞网页的加载。为了避免这种情况,JavaScript 提供了两种技术,即异步和延迟。你只需将这些属性添加到