循环的类型

一: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. sql语言(mysql)

    一.SQL语言 1.DDL (Data Definition Language) 数据库定义语言 2.DML(Data Manipulation Language) 数据库操作语言 3.DQL (Da ...

  2. 爬虫六之爬取猫眼电影top100

    该爬虫比较简单,代码放在github上 https://github.com/GhostSteven/Crawler/tree/master/maoyantop100

  3. XSS-DOM型

    dom型因为js不会,无法理解啊!!!!!!!!!!!!! HTML DOM实例https://www.runoob.com/htmldom/htmldom-examples.html 其实DOM型x ...

  4. 【VS开发】【图像处理】双边滤波器bilateral filter

    目录(?)[-] 简介 原理 代码实现 1 Spatial Weight 2 Similarity Weight 3 Color Filtering 在SSAO中的使用 1. 简介 图像平滑是一个重要 ...

  5. 微软宣布加入 OpenJDK,打不过就改变 Java 未来!

    近日,微软的 Bruno Borges 在 OpenJDK 邮件列表中发布了一条消息,内容包含接下来发生的事情以及微软如何开始将其团队整合到 OpenJDK 社区. 在邮件中,Bruno Borges ...

  6. hibernate字段映射枚举类型

    上一篇介绍了mybatis字段映射枚举类型,这一篇给大家介绍一下hibernate字段怎么去映射枚举类型的(这只是一种参考方式,映射方法还有很多种). 还是以上篇sku表为例,sku表里一个statu ...

  7. 赛道修建 NOIP 2018 d1t3

    题目大意 最小值最大 考虑二分 二分答案 判断能不能构成m条路径 很明显满足单调性 可行 思考如何判断 对于一个节点 它的儿子会传上来一些路径 这些路径只有三种处理方式 一.传上去(只能传一条) 二. ...

  8. hugo搭建个人博客

    本地先安装git 1. 下载hugo,并配置好环境变量 我这里win7 64位,选择该版本下载 将解压后的hugo.exe,配置到环境变量中,如下图所示表明配置成功 hugo version 2. 生 ...

  9. python3 修改大数据量excel内容

    最好使用python3 64位 对excel的修改操作: from openpyxl import load_workbook import time #打开一个excel表格.xlsx wb = l ...

  10. kafka 教程(三)-远程访问

    远程连接 kafka 配置 默认的 kafka 配置是无法远程访问的,解决该问题有几个方案. 方案1 advertised.listeners=PLAINTEXT://IP:9092 注意必须是 ip ...