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. pl/sql配置连接远程数据库oracle,本地没有安装oracle数据库的情况下

    首先下载instantclient 可以到oracle官网下载,要注册账号,一定要下对应版本的,要不然不成功, 10G,11G版的,我已经传上来了,免费下载:正在上传中,稍等 配置文件tnsnames ...

  2. 在java下使用log4j2记录日志

    1.定义: log4j2 指log4j 2.X及以上版本 2.安装 log4j-core-xx.jarlog4j-api-xx.jarlog4j-web-xx.jar(web项目的需要引用) 3.配置 ...

  3. 同时使用Junit4的@Parameterized参数化测试和Spring容器

    转载:http://www.jianshu.com/p/d191fe54915f 整合Spring容器 @SpringApplicationConfiguration(classes = Applic ...

  4. css不常用重要属性

    超出省略号:display:block;white-space:norwrap;overflow:hidden;text-overflow:ellipsis; white-space:norwrap/ ...

  5. problem during schema create,statement create sequence act_evt_log_seq

    今天在调试程序的时候出现"problem during schema create,statement create sequence act_evt_log_seq"这个错误,跟 ...

  6. 【OpenCV】视频取坐标

    今天实现了视频播放以后暂停获取鼠标点击处坐标的功能. #include <iostream> #include <opencv2/highgui/highgui.hpp> #i ...

  7. day10-redis操作

    Redis redis是一个key-value存储系统.和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorte ...

  8. 从零开始,教你用Webpack构建React基础工程

    参考 http://www.jianshu.com/p/4df92c335617

  9. [python实现设计模式]-1. 单例模式

    设计模式中,最简单的一个就是 “单例模式”, 那么首先,就实现一下单例模式. 那么根据个人的理解,很快就写出第一版. # -*- coding: utf-8 -*- class Singleton(o ...

  10. 7、IMS - DNS & ENUM

    1.相关基础SBC:http://blog.sina.com.cn/s/blog_7a6f76080100vp9r.html 2.ENUM/DNS查询过程:http://blog.sina.com.c ...