如何加快JavaScript代码的执行速度

1,033 阅读5分钟

在开发一个应用程序或网站时,需要考虑的最关键因素之一是应用程序或网站的性能。作为一个用户,我不希望任何应用程序需要很长的时间来加载,或者每当我点击一些东西,我不得不等待一些行动。通常情况下,如果网页需要5-6秒的时间来加载,包括我在内的大多数用户都会离开这个网页。

对于网络开发者来说,JavaScript是一个神奇的工具。每个网络开发者都会在他们生命中的某个时刻学习JavaScript。然而,糟糕的JavaScript代码会导致网站变慢。

考虑到这一点,一个开发者总是在寻找改善他的网页的方法。你很幸运,因为今天我们要谈的是如何加快JavaScript代码的执行速度。

循环中的活动减少

一个程序员经常使用循环来缩短他的代码。然而,应该记住的是,有一些使用循环的坏方法会使你的程序变慢。

让我们举一个 "for "循环的例子。

例子

for(let i=0; i < myArray.length; i++){
   //Hello
}

这个循环在程序上是正确的,但其性能会很差。我们可以把myArray.length语句放在循环之外,这样它就不必一次又一次地计算长度,直到循环结束。

解决方案

let len=myArray.length;
for(let i=0; i < len; i++){
   //Hello
}

在这个循环中,我们可以看到长度是固定的,循环不必在每次迭代时计算数组的长度。因此,速度提高了,性能也提高了。

减少多姆访问

如果我们将JavaScript语句与访问HTML Dom进行比较,我们会发现访问HTML Dom的速度非常慢。如果我们没有访问或执行许多Dom操作,这不是一个问题。但是,当你执行许多Dom操作时,确实会影响网页的速度。

解决这个问题的办法是将Dom元素存储在一个局部变量中,然后我们可以多次访问该变量。

例如

const myObj=document.getElementById("speed"),innerHTML="not achieved";
const myObj=document.getElementById("speed").hidden="false";
//slow and hinders speed

这使得我们的程序执行效率很低。

我们来看看另一个解决这个问题的例子。

const myObj=document.getElementById("speed");
myObj.innerHTML="achieved";
myObj.hidden="false";

现在我们已经了解了Dom访问量的减少,让我们来看看Dom大小的减少,以提高我们在JavaScript中的网页速度。

缩减Dom的大小

在讨论缩小dom大小之前,让我们先看看过大的dom大小,如果dom大小过大,意味着你的页面有太多的dom结点/HTML组件。这也可能意味着你的页面dom元素被深度嵌套。这将导致消耗更多的电力,从而降低页面性能或速度。

解决的办法是,HTML Dom中的元素数量应该最小化。这样做的好处是,它将提高页面的加载速度,并加快渲染过程,也就是页面的显示。特别是在手机等小型设备上,这是非常方便的。

消除不必要的变量

这是最简单的提高网页性能的技巧。为什么要在不需要的时候制造变量呢?另外,为什么要在你知道你只是用它来显示某个地方的情况下制造变量?当我们避免制造不必要的变量时,我们的网页性能就会提高。

例如,不好的代码

let firstName="Jhon";
let lastName="Cena";
let fullName=firstName+" "+lastName;
alert(fullName);

在这个例子中,我们可以看到,我们在fullName中存储了名字和姓氏,只是为了在警报中显示它。直接提醒firstName和lastName不是更好吗?这就是消除不必要的变量的意义所在。

解决方案(好的代码)

let firstName="Jhon";
let lastName="Cena";
alert(firstName+" "+lastName);

延迟加载JavaScript

为了提高你的网页的JavaScript性能,通常的做法是在HTML页面的末尾放一个脚本标签或在脚本标签内放JavaScript代码。其主要目的是让浏览器先加载HTML,然后再加载JavaScript代码。用技术术语来说,当一个脚本正在下载时,浏览器不会启动任何其他的下载,所有的解析和渲染都会被阻止。

我们也可以在我们的脚本标签中使用 "defer="true"。defer属性的作用是,它规定只有在页面解析完成后才可以执行脚本。换句话说,它要等到整个DOM加载完毕。然而,应该注意的是,它只与外部脚本兼容。

例子

<script>
       window.onload = function() {
         const ele = document.createElement("script");
         ele.src = "code.js";
         document.body.appendChild(ele);
       };
</script>

避免使用关键词 "with"

With关键字用于引用一个对象的属性或方法,因为它是一种速记法。使用关键词 "with "会减慢速度。不使用with关键字的另一个原因是,它使JavaScript的作用域变得很杂乱。

最小化JavaScript代码

最小化或最小化JavaScript代码是另一种加快我们JavaScript代码执行速度的方法。最小化JavaScript代码只是意味着在不改变程序功能的情况下,删除或改变JavaScript源代码中所有不需要的和不必要的字符。它包括多种内容,如删除注释、分号以及空白。除此之外,它还包括使用短的函数和变量名称。让我们来看看代码最小化前后的例子。

最小化之前

//the function
//which console log

//the first message from person

function firstMessage(name){
  console.log("First Message is from: ",name);
}
//now call the function

firstMessage("John");

最小化后

function fMsg(n){console.log("First Message is from: ",n)}firstMessage("John");

总结

开发者总是保持代码的可靠性和优化之间的平衡。正是由于这个原因,我们在这篇文章中讨论了如何加快JavaScript代码的执行速度。上面提到的所有技巧和窍门,如果一起使用,会对JavaScript代码的速度有很大的提高。 然而,人们应该记住,尽管性能是必要的,但并不高于检测错误或增加功能。