循环的类型

一:for
var arr = [1, 2, 3, 4, 5, 6];

for (var i = 0, len = arr.length; i < len; i++) {

console.log(arr[i]);

}

  

在for循环中定义的新变量相当于在循环体外定义的变量,所以可以写成如下格式。

var i = 0, len = arr.length;

for (; i < len; i++) {

console.log(arr[i]);

}

  

每次循环执行结束都会对i进行增量操作(增量可以为负数),所以可以将增量操作写到代码块最后执行。

i++只是其中常用写法,也可以是i = i +2其他方式。

  1. var i = 0, len = arr.length;
    
    for (; i < len;) {
    
    console.log(arr[i]);
    
    i++;
    
    }
二:for-in  一般用于遍历对象
var obj = {a: 1, b: 2, c: 3 };

for (var key in obj) {

console.log(key + ": " + obj[key]); //a: 1 b:2 c:3

}
三:for-of   ES6新增! 允许遍历数组、字符串、Map等可迭代的数据结构!
var arr = [1, 2, 3, 4, 5];

for (var v of arr) {

console.log( v); //1 2 3 4 5

}

var str = "abcdefg";

for (var v of str) {

console.log(v); //a b c d e f g

}
四:while
var i = 0;

while(i < 5) {

console.log(i); //0 1 2 3 4

i++;

}
五:do-while
var i = 0;

do {

console.log("do: " + i); //0 1 2 3 4

i++;

}

while(i < 5)

  

do-while循环是while的一个变形,先执行在判断,所以它至少会执行一次。

var i = 10;

do {

console.log("do: " + i); //10

i++;

}

while(i < 5)

  

循环的性能!!!

for-in的循环性能是明显慢与其他几种循环,它的每次迭代操作的同时都是会去搜索原型或者原型属性,产生额外开销,所以

避免使用for-in循环!云服务器Window Server 2012R系统安装MySQL的详细教程

不要用for-in来迭代数组!

性能优化!!!

1:减少迭代的工作量,减少对象成员及数组项的查找次数

2:倒序循环,会略微提升性能

var arr = [1, 2, 3, 4, 5];

for (var i = arr.length; i--;) { //将控制条件简单的与零比较,任何非零数自动转为true,而零值则为false。

console.log(i); //从两次迭代比较(迭代数小于总数吗?他是否为true?)减为一次(它是true吗?)

}

  

1+2优化可以提升运行速度比原始版本快50%~60%。

PS:基于函数的迭代forEach()被原生支持,但是他的速度慢于基于循环的迭代,因为它对每个数组项都调用外部方法所带来的开销比较大,这是速度慢的主要原因,基于循环的迭代是基于函数迭代速度快八倍,所以forEach()一般不作于循环的选择。

JavaScript的几种循环使用方式及性能解析的更多相关文章

  1. ArrayList和LinkedList的几种循环遍历方式及性能对比分析

    最新最准确内容建议直接访问原文:ArrayList和LinkedList的几种循环遍历方式及性能对比分析 主要介绍ArrayList和LinkedList这两种list的五种循环遍历方式,各种方式的性 ...

  2. Java 集合 ArrayList和LinkedList的几种循环遍历方式及性能对比分析 [ 转载 ]

    Java 集合 ArrayList和LinkedList的几种循环遍历方式及性能对比分析 @author Trinea 原文链接:http://www.trinea.cn/android/arrayl ...

  3. ArrayList和LinkedList的几种循环遍历方式及性能对比分析(转)

    主要介绍ArrayList和LinkedList这两种list的五种循环遍历方式,各种方式的性能测试对比,根据ArrayList和LinkedList的源码实现分析性能结果,总结结论. 通过本文你可以 ...

  4. ArrayList和LinkedList的几种循环遍历方式及性能对比分析(转载)

    原文地址: http://www.trinea.cn/android/arraylist-linkedlist-loop-performance/ 原文地址: http://www.trinea.cn ...

  5. 【转】ArrayList和LinkedList的几种循环遍历方式及性能对比分析

    原文网址:http://www.trinea.cn/android/arraylist-linkedlist-loop-performance/ 主要介绍ArrayList和LinkedList这两种 ...

  6. (转)ArrayList和LinkedList的几种循环遍历方式及性能对比分析

    主要介绍ArrayList和LinkedList这两种list的五种循环遍历方式,各种方式的性能测试对比,根据ArrayList和LinkedList的源码实现分析性能结果,总结结论. 通过本文你可以 ...

  7. JavaScript中三种字符串连接方式及其性能比较

    参考地址: https://www.cnblogs.com/programs/p/5554742.html 工作中经常会碰到要把2个或多个字符串连接成一个字符串的问题,在JS中处理这类问题一般有三种方 ...

  8. HashMap循环遍历方式及其性能对比(zhuan)

    http://www.trinea.cn/android/hashmap-loop-performance/ ********************************************* ...

  9. HashMap循环遍历方式及其性能对比

    主要介绍HashMap的四种循环遍历方式,各种方式的性能测试对比,根据HashMap的源码实现分析性能结果,总结结论.   1. Map的四种遍历方式 下面只是简单介绍各种遍历示例(以HashMap为 ...

随机推荐

  1. 2 Java中常见集合

    1)说说常见的集合有哪些吧? 答:集合有两个基本接口:Collection 和 Map. Collection 接口的子接口有:List 接口.Set 接口和 Queue 接口: List 接口的实现 ...

  2. 文件的上传(1)(表单上传和ajax文件异步上传)

    文件的上传(表单上传和ajax文件异步上传) 项目中用户上传总是少不了的,下面就主要的列举一下表单上传和ajax上传!注意: context.Request.Files不适合对大文件进行操作,下面列举 ...

  3. 第八周课程总结-实验报告六(Java异常)

    理解异常的基本概念: 掌握异常处理方法及熟悉常见异常的捕获方法 实验要求 练习捕获异常.声明异常.抛出异常的方法.熟悉try和catch子句的使用. 掌握自定义异常类的方法 实验内容 编写一个类,在其 ...

  4. 4、android studio打包的时候遇到的问题

    那就去掉该签名 但是如果使用generated apk的话,则是不会去调用build.gradle文件的,需要使用gradle命令来打包 https://blog.csdn.net/cencibuqi ...

  5. (5.1.5)引擎管理——多服务器管理之中央管理服务器(CMS)

    关键词:中央管理服务器,CMS,多服务器管理 中央管理服务器 -[1]打开 视图->已注册的服务器 [2]注册中央管理服务器 右击中央管理器->注册中央管理服务器 这里输入IP.主机名都可 ...

  6. [转帖]oracle 00600 4194 4193 问题的处理

    oracle断电重启之ORA-00600[4194] https://www.cnblogs.com/xwdreamer/p/3778383.html 部门的机器出现异常 断电导致的 错误 从网上学了 ...

  7. centos7下apache启动报错记录

    http重启httpd发生错误,后面按照提示执行systemctl status httpd.service命令 按照提示,继续执行journalctl -xe 这里显示了详细的错误信息,并且给出了解 ...

  8. fatal: refusing to merge unrelated histories问题解决

    git中pull或merge时偶尔出现

  9. 微信小程序 报错 “对应的服务器无效。控制台输入 showRequestInfo()可以获取更详细信息”

    之前做的项目突然无法读出数据了,一测试发现报这个错误==>对应的服务器无效.控制台输入 showRequestInfo()可以获取更详细信息,后来发现是SSL证书到期了.重新申请了一个证书,免费 ...

  10. HDU 1052 Tian Ji -- The Horse Racing (贪心)(转载有修改)

    Tian Ji -- The Horse Racing Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (J ...