1.for循环

 var
arr = [];
for (var i = 0; i < arr.length; i++) {
if (条件1)
return;
if (条件2)
break;
if (条件3)
continue;
};

js最常用的循环必然是for循环,最基础的用法,用于数组遍历,但是代码书写过多。

 var
arr = [];
Array.prototype.customFunc = function () { };
for (var item in arr) {
if (!arr.hasOwnProperty(item)) {
if (条件1)
return;
if (条件2)
break;
if (条件3)
continue;
}
};

var in的形式遍历用于遍历数组并不理想,这个遍历方式是遍历属性的,特殊情况下是可以使用,使用这种遍历方式会将数组本身的属性也遍历出来,比如我们在Array上扩展一个方法customFunc,此时遍遍历数组会将customFunc也遍历出来达不到预期效果,非要用怎么办,加一层判断利用hasOwnProperty方法将数组原型中的属性扣出去,这样遍历就不用担心前面的问题了。

2.ES5遍历方式

var
arr = [];
arr.forEach((item, index) => {
if (条件)
return;
})

forEach是ES5定义的一种遍历方式,这个方法用起来很方便,但是弊端是无法使用break,continue,也就是无法跳出一次循环,只能用return结束整个函数执行,这点就比较尴尬了,如果有跳出循环的逻辑还是用for循环吧。效率上for循环也高于forEach。

3.ES6遍历方式

 var
arr = [];
for (var item of arr) {
if (条件1)
return;
if (条件2)
break;
if (条件3)
continue;
}

ES6的for循环写法。这种方式非常好,弥补了for(var in)的弊端,也弥补了forEach的弊端。而且这种遍历方式还可以对String、Object等等进行遍历。

以上列举了一下常用的遍历方式,在这里mark一下。

关于js中的for(var in)遍历属性报错问题的更多相关文章

  1. JS中常见的几种控制台台报错

    Error 控制台报错 EvalError 全局错误RangeError 引用错ReferenceError 参数错误SyntaxError 语法错误TypeError 类型错误URIError 编码 ...

  2. js中 慎用for(var o in arrays) 遍历数组,for(var i,i< objects.length;i++)与for(var i,n = objects.length;i<n;i++) 的性能区别

    原文:js中 慎用for(var o in arrays) 遍历数组,for(var i,i< objects.length;i++)与for(var i,n = objects.length; ...

  3. JS中const、var 和let的区别

    今天第一次遇到const定义的变量,查阅了相关资料整理了这篇文章.主要内容是:js中三种定义变量的方式const, var, let的区别. 1.const定义的变量不可以修改,而且必须初始化. 1 ...

  4. js中的let\var\const

    在JavaScript中有三种声明变量的方式:var.let.const.下文给大家介绍js中三种定义变量的方式const, var, let的区别. 1.const定义的变量不可以修改,而且必须初始 ...

  5. JS中let和var的区别

    js中let和var定义变量的区别   let变量之前没见过,刚遇到,探探究竟. 以下转自:http://blog.csdn.net/nfer_zhuang/article/details/48781 ...

  6. Js中的数据属性和访问器属性

    Js中的数据属性和访问器属性 在javaScript中,对象的属性分为两种类型:数据属性和访问器属性. 一.数据属性 1.数据属性:它包含的是一个数据值的位置,在这可以对数据值进行读写. 2.数据属性 ...

  7. javascript的倒计时功能中newData().getTime()在iOS下会报错问题解决

    javascript的倒计时功能中newData().getTime()在iOS下会报错问题解决 在做移动端时间转化为时间戳时,遇到了一个问题,安卓手机上访问时,能拿到时间戳,从而正确转换时间,而在i ...

  8. php中读取中文文件夹及文件报错

    php读取时出现中文乱码 一般php输出中出现中文乱码我们可用 header ('content:text/html;charset="utf-8"'); php中读取中文文件夹及 ...

  9. IDEA中写MyBatis的xml配置文件编译报错的坑

    IDEA中写MyBatis的xml配置文件编译报错的坑 说明:用IDEA编译工具在项目中使用Mybatis框架,编写mybatis-config.xml和Mapper.xml配置文件时,编译项目出现错 ...

随机推荐

  1. ld.so.conf 和 ldconfig

    1. 查看执行文件的链接库 ldd 例子: # ldd /sbin/sln not a dynamic executable “not a dynamic executable”是 ldd 说明 sl ...

  2. R&S学习笔记(二)

    1.OSPF:路由条目1万多条.收敛时间1s:ISIS:路由条目可以达2万多条,收敛时间50ms().ISIS在链路层上面,不依赖IP这层,这样给了它很多可能.比如IPv4, IPv6路由的混合承载, ...

  3. Mware vCenter Server 识别固态硬盘为(非SSD)是什么原因?

    人工定义一下: 用root登录进ESXi控制台:esxcli storage nmp device list #列出储存清单esxcli storage nmp satp rule add -s VM ...

  4. Spark On YARN使用时上传jar包过多导致磁盘空间不够。。。

    今天测试过程中发现YARN Node变成Unhealthy了,后来定位到硬盘空间不够..... 通过查找大于100M的文件时发现有N多个spark-assembly-1.4.0-SNAPSHOT-ha ...

  5. GPUImage实现摄像头暂停

    GPUImage相信很多开发者都用过,其本身也是十分简单易用,因此对于GPUImage的基本用法不再赘述. 最近在使用GPUImage时要实现摄像时暂停和继续的功能,但GPUImage本身并没有提供相 ...

  6. 剑指Offer:面试题29——数组中出现次数超过一半的数字(java实现)

    PS:在前几天的面试中,被问到了这个题.然而当时只能用最低效的方法来解. 问题描述: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字.例如输入一个长度为9的数组{1,2,3,2,2,2, ...

  7. OGC学习课程

    1.引言 由于项目需要,需要学习OGC相关地图标准,包括WMS.WFS.GML.SLD等,只是国内相关书籍大家都懂的,特向Google大师请教,得一秘籍<Open Web Mapping> ...

  8. XMLHttpRequest简单总结

    一.概念 XMLHttpRequest 对象用于在后台与服务器交换数据. XMLHttpRequest 对象是能够: 在不重新加载页面的情况下更新网页 在页面已加载后从服务器请求数据 在页面已加载后从 ...

  9. Python 练习

    1.有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中.即: {'k1': ...

  10. shallow copy 和 deep copy 的示例

    本文属原创,转载请注明出处:http://www.cnblogs.com/robinjava77/p/5481874.html   (Robin) Student package base; impo ...