详解JS中你不知道的各种循环测速

详解JS中你不知道的各种循环测速

前言

在 JavaScript 中,循环是最常用的控制结构之一。不同类型的循环可能具有不同的性能,有时甚至会对程序的性能产生重大的影响。本文将介绍 JavaScript 中常见的各种循环类型,并通过实例演示其性能差异。

常见循环类型

for 循环

for 循环是 JavaScript 中最常见、最基本也是最容易理解的循环类型。它可以用来迭代数组和对象属性,通过迭代计数器来控制循环次数,如下代码所示:

for (let i = 0; i < arr.length; i++) {
  // 迭代 arr 数组
}

for...in 循环

for...in 循环用于迭代对象中的可枚举属性。该循环将依次迭代对象的每个可枚举属性,直到所有属性都被迭代结束。

for (let key in obj) {
  // 迭代对象 obj 的可枚举属性
}

for...of 循环

for...of 循环是 ES6 中新增的迭代器循环语句,用于迭代可迭代对象(如数组、Set、Map 等对象)。与 for 循环不同,for...of 语句不需要索引或计数器,直接依次取出迭代器返回的值,如下所示:

for (let item of arr) {
  // 迭代 arr 数组
}

forEach 循环

forEach 循环是数组提供的一个迭代器方法,它接受一个函数作为参数,该函数将依次对数组的每个元素执行一次。forEach 循环不能使用 break、continue 关键字停止循环,无法更改数组中的元素。

arr.forEach(function(item, index, array) {
  // 遍历数组 arr,item 是当前元素,index 是元素的索引,array 是数组本身
});

while 循环

while 循环是 JavaScript 中最常见的循环类型之一,它在循环体内部检查条件,只要条件满足,就一直执行循环体代码。

while (condition) {
  // 检查条件,满足则执行循环体代码
}

do...while 循环

do...while 循环与 while 循环类似,但它的循环体至少会被执行一次,然后再检查条件是否满足。

do {
  // 执行循环体代码
} while (condition);

性能测试

为了测试各种循环类型的性能,我们可以编写一个简单的代码片段,用于计算从 1 到 100000 的所有数字之和,如下所示:

// for 循环
let sum1 = 0;
for (let i = 1; i <= 100000; i++) {
  sum1 += i;
}
console.log(sum1);

// for...in 循环
let sum2 = 0;
for (let i in Array.from({ length: 100000 }, (x, i) => i + 1)) {
  sum2 += parseInt(i, 10) + 1;
}
console.log(sum2);

// for...of 循环
let sum3 = 0;
for (let i of Array.from({ length: 100000 }, (x, i) => i + 1)) {
  sum3 += i;
}
console.log(sum3);

// forEach 循环
let sum4 = 0;
let arr = Array.from({ length: 100000 }, (x, i) => i + 1);
arr.forEach((item) => {
  sum4 += item;
});
console.log(sum4);

// while 循环
let sum5 = 0;
let i = 1;
while (i <= 100000) {
  sum5 += i;
  i++;
}
console.log(sum5);

// do...while 循环
let sum6 = 0;
let j = 1;
do {
  sum6 += j;
  j++;
} while (j <= 100000);
console.log(sum6);

运行以上代码片段,我们可以得到各种循环类型的计算时间。在我的测试环境中(Chrome 95,Windows 10),for 循环的性能最好,而 for...in 循环性能最差。通过对多次运行测试得到的结果进行分析,我们可以得到以下结论:

  1. 在循环次数较少的情况下,各种循环的性能比较接近,差异不明显。
  2. 在循环次数较多的情况下,for 循环的性能优于其他循环类型,而 for...in 循环的性能最差,这是因为 for...in 循环需要获取每个属性的名称,存在一定的性能开销。
  3. 在迭代数组时,for 循环和forEach 循环的性能相似。
  4. 在需要迭代对象属性时,for...in 循环是最常见且应用广泛的迭代器。

总结

本文介绍了 JavaScript 中常见的各种循环类型,包括 for 循环、for...in 循环、for...of 循环、forEach 循环、while 循环和do...while 循环。而针对各种循环类型,我们通过实例演示了它们性能的差异。在实际开发中,我们应该根据实际情况选择适当的循环类型,以提高代码的性能和可读性。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详解JS中你不知道的各种循环测速 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • asp.net gridview分页:第一页 下一页 1 2 3 4 上一页 最末页

    当我们需要在asp.net网站中实现数据分页展示的功能时,可以使用GridView控件来实现。下面是实现asp.net GridView 分页展示的完整攻略。 安装PagedList.Mvc 我们可以通过Nuget安装PagedList.Mvc,在Manage NuGet Packages界面搜索PagedList.Mvc进行安装。这是一个非常常用的分页库,…

    JavaScript 2023年6月11日
    00
  • jquery的$getjson调用并获取远程的JSON字符串问题

    当我们希望从远程的JSON文件中获取数据时,可以使用jQuery库中的getJSON函数。下面,我将为大家详细讲解“jQuery的getJSON调用并获取远程的JSON字符串问题”的完整攻略,包括使用方法和示例说明。 使用方法 getJSON函数是jQuery库中的一个方法,其作用是从服务器获取JSON格式数据,其基本语法格式如下所示: $.getJSON(…

    JavaScript 2023年5月27日
    00
  • asp.net下模态对话框关闭之后继续执行服务器端代码的问题

    ASP.NET下模态对话框关闭之后继续执行服务器端代码的问题,可以通过以下方式实现: 1. 使用JavaScript和AJAX 在模态对话框中的“确认”或“取消”按钮中添加JavaScript代码,利用 AJAX 技术向服务器发送请求,通知服务器对话框已经被关闭,同时执行需要执行的服务器端代码。以下是示例代码: function CloseModal() {…

    JavaScript 2023年6月11日
    00
  • JavaScript实现动态添加、移除元素或属性的方法分析

    JavaScript实现动态添加、移除元素或属性的方法分析 动态添加元素 方法一:createElement()方法 我们可以使用createElement()方法来创建一个新的元素节点,然后将该节点添加到文档中的某个元素中作为其子元素。其基本语法为: document.createElement(tagName) 其中,tagName指定新节点的标签名称,…

    JavaScript 2023年6月10日
    00
  • javascript用defineProperty实现简单的双向绑定方法

    下面是javascript用defineProperty实现简单的双向绑定方法的攻略: 1. 了解Object.defineProperty方法 Object.defineProperty是Javascript中的一个对象方法,它允许我们在已有的对象上增加一个属性并定义它的属性描述符。 它的第一个参数是需要定义属性的对象,第二个参数是属性名称,第三个参数则是…

    JavaScript 2023年6月10日
    00
  • JS实现给不同元素设置不同的定时器

    实现给不同元素设置不同的定时器主要依赖于JavaScript的定时器函数setInterval()和clearInterval()。下面是实现的步骤和注意事项: 步骤: 首先,为不同的元素设置不同的ID或者Class。 在JavaScript中,使用setInterval()函数来设置定时器,该函数会在一定时间间隔内反复运行一个函数。 定义一个执行函数,用来…

    JavaScript 2023年6月11日
    00
  • Vue之mixin全局的用法详解

    Vue之mixin全局的用法详解 1. 概述 Vue中的mixin(混入)机制可以让组件之间的代码可以进行复用,即在多组件中共用同一段代码,而不用把这段代码写在多个组件里。这对于代码复用、减少冗余代码是一个非常好的解决方案。mixin可以理解为是一种能够让我们将组件的一部分功能提取出来,并进行重复利用的机制。 2. 语法 下面是mixin的语法: var m…

    JavaScript 2023年6月11日
    00
  • jquery 表单进行客户端验证demo

    以下是详细的攻略: jQuery 表单进行客户端验证 在使用表单提交数据之前,通常需要对表单进行客户端验证,以避免无效的数据被提交到后台服务器。jQuery 是一种非常流行的 JavaScript 库,可以方便地实现表单验证功能。 接下来我们将向您展示如何使用 jQuery 对表单进行客户端验证。以下是大致的步骤: 引入 jQuery JS 库。在 HTML…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部