手机版

深入探讨JavaScript中循环语句的优化技巧

时间:2021-11-07 来源:互联网 编辑:宝哥软件园 浏览:

循环是所有编程语言中最重要的机制之一,几乎任何具有实际意义的计算机程序(排序、查询等)都是如此。)不能开环。循环也是程序优化中非常麻烦的部分。我们经常需要不断优化程序的复杂度,但是因为循环,我们纠结于时间复杂度和空间复杂度之间的选择。在javascript中,有三种本机循环,for () {},while () {}和do {} while(),其中最常用的是for () {}。然而,for是javascript工程师在优化程序时最容易忽略的循环之一。让我们先复习一下的基础知识。javascript的for语法继承自C语言,有两种方法可以使用for循环的基本语法。1.loop for循环数组的基本语法如下:for (/*初始化*/2 /*判断条件*/2 /*循环处理*/) {//.逻辑代码}我们将用一个示例代码详细解释它。复制代码如下:var array=[1,2,3,4,5];var sum=0;for (var i=0,len=array.length我透镜;I){ sum=array[I];}console.log('数组项的总和为%d ' ',总和);//=数组项目的总和是15。在这段代码中,我们首先定义并初始化一个数组来存储要累加的项目,并定义一个和来塑造变量。接下来,我们开始循环。在for循环的初始化代码中,我们还定义并初始化了两个变量:I(计数器)和len(循环数组长度的别名)。当I小于len时,循环条件成立,执行逻辑代码。每次执行逻辑代码,我都会增加1。在循环的逻辑代码中,我们将当前循环的数组项添加到sum变量中。这个周期用流程图表示如下:

从这个流程图中我们很容易发现,程序中真正的循环体不仅有我们的逻辑代码,还包括实现循环本身的执行判断和循环处理。这样我们的优化思路就清晰了,可以从四个方面进行优化。1.循环体2之前的初始化代码。循环体3中的执行判断条件。逻辑代码4。处理逻辑代码ps:之后的代码,其中第一点和第二点有重要关系。1.1优化初始化代码和执行判断条件我们先来看一段大家都非常熟悉的代码。复制代码如下://错误!For (var i=02 i list.length2 i) {//.逻辑代码}我相信大多数编写javascript的工程师仍然在使用这种看似残酷而正常的循环方法,但为什么我在这里说它是错误的呢?让我们把这个循环中的所有东西分开来看:1。初始化代码——这个循环只定义和初始化一个计数器变量。2.执行判断条件-当计数器小于列表长度时。3.处理代码-计数器增加1。我们再看一遍上面的流程图,看看有没有倪端?真正的循环体不仅包括我们的逻辑代码,还包括实现循环本身的执行判断和处理代码。也就是说,i list.length的判断条件应该在每个循环之前执行。在javascript中,当读取对象的属性或方法时,需要查询。似乎明白了什么?这个判断条件有两个操作:1。从列表数组中查询长度属性;2.比较I和list.length的大小,假设list数组包含n个元素,程序在这个循环的执行判断中需要执行2n次运算。如果我们这样更改代码:复制代码如下://well for (var I=0,len=list.length我透镜;I) {//.}在这个改进的代码中,我们在执行循环体之前,在初始化代码中添加了definition,并初始化了一个len变量,用于存储list.length的值(变量、表达式、指针和值的相关内容将在第二部分讨论)。这样,在循环体的执行判断中,我们就不需要再次查询列表数组的属性,操作数是原来的一半。在上面的步骤中,我们已经完善了算法的时间复杂度,但是如果想要继续优化空间复杂度,应该怎么做呢?如果您的逻辑代码不受循环序列的限制,您可以尝试以下优化方法。复制代码如下: for(var I=list . length-1;I=0;-我){//.}这段代码从最后一个元素下标(list.length-1)开始I计数器,并通过反转循环顺序向前循环。为了将循环所需的变量减少到一个,并在执行判断时,减少。

版权声明:深入探讨JavaScript中循环语句的优化技巧是由宝哥软件园云端程序自动收集整理而来。如果本文侵犯了你的权益,请联系本站底部QQ或者邮箱删除。