forEach() 方法用于调用数组的每个元素,并将元素传递给回调函数。

注意: forEach() 对于空数组是不会执行回调函数的。

示例代码

 var arr = [4, 9, 16, 25];
arr.forEach(function(value, index) {
console.log(index+': '+value+'\n');
});

结果如下

for/in 语句用于循环对象属性。

循环中的代码每执行一次,就会对数组的元素或者对象的属性进行一次操作。

示例代码

 var person = {
name: 'jack',
age: 18,
gender: 'male'
};
for(key in person) {
console.log(key+': '+person[key]+'\n');
}

结果如下

需要注意的是,如果使用for in语句遍历数组,可能会出现以下问题:

  1. 索引为字符串类型,不能直接进行几何运算。

  2. 遍历顺序有可能不是按照实际数组的内部顺序。

  3. 使用for in会遍历数组所有的可枚举属性,包括原型。

如下所示

 var arr = [12, 43, 19];
Array.prototype.index = 110;//这里的原型属性也会被打印出来
for(var index in arr) {
console.log(index+': '+arr[index]+'\n');
}

运行结果

for of语句和for in 语句相比使用更方便,它是ES6新提出的遍历数组的方式,

具体使用

 var arr = [12, 43, 19];
Array.prototype.index = 110;//此原型属性不会被打印出来
for(var value of arr) {
console.log(value+'\n');
}

结果如下

综述:foreach更多的用来遍历数组,但使用比较复杂;for in 一般常用来遍历

对象;for of 用来遍历数组非常方便且比较安全。

foreach, for in, for of 之间的异同的更多相关文章

  1. jquery插件模式开发和react组件开发之间的异同

    jquery插件模式开发和react组件开发之间的异同

  2. 深层次揭示runBlocking与coroutineScope之间的异同点

    在之前https://www.cnblogs.com/webor2006/p/11731763.html咱们写过这样的一个例子,先来回顾一下: 也就是来演示runBlocking与coroutineS ...

  3. 关于commonjs,AMD,CMD之间的异同

    1.简介 随着前端业务复杂度的增加,模块化成为一个大的趋势.而在ES6还未被浏览器所支持的情况下,commonjs作为ES6中标准模块加载方案,在客服端中的支持情况并不好,现在在客服端中有2中模块化的 ...

  4. WCF与WebService之间的异同

    下面我们来详细讨论一下二者的区别.Web Service和WCF的到底有什么区别. 1,Web Service:严格来说是行业标准,也就是Web Service 规范,也称作WS-*规范,既不是框架, ...

  5. 图像分类中max-pooling和average-pooling之间的异同

    池化操作时在卷积神经网络中经常采用过的一个基本操作,一般在卷积层后面都会接一个池化操作,但是近些年比较主流的ImageNet上的分类算法模型都是使用的max-pooling,很少使用average-p ...

  6. 浅谈java中接口与抽象类之间的异同

    刚学习java的时候,总觉得接口和抽象类很像,但又说不上具体有什么区别.今天静下来,翻翻书,查查资料,做个小结.首先举两个例子,看看interface和abstract class 在“外形”上有啥异 ...

  7. 【精】cookie、 sessionStorage 、localStorage之间的异同

    1.cookie:存储在用户本地终端上的数据.有时也用cookies,指某些网站为了辨别用户身份,进行session跟踪而存储在本地终端上的数据,通常经过加密.一般应用最典型的案列就是判断注册用户是否 ...

  8. java中抽象类和接口之间的异同点

      抽象类 接口 声明方式 abstratc class ClassName interface ClassName 包含内容 构造方法,普通方法,抽象方法.static方法 .变量常量 全局常量.抽 ...

  9. static变量、static方法之间的异同

        private SchemeBean getEmptyScheme() {        SchemeBean scheme = new SchemeBean();        scheme ...

随机推荐

  1. frp使用总结

    笔者所知并成功实现内网穿透的方法: 花生壳 (需要花8块钱,使用花生壳给的二级域名,这里不做介绍) ngrok (免费,但是每次重启服务二级域名会变,付费的$5每月不会变) frp(开源免费,需要有自 ...

  2. Cocos2d-js 开发记录:图片数据资源等的异步加载

    这里说的是在需要的使用加载图片,比如游戏中的某个关卡的图片,不用在游戏一开始就加载(万一用户玩不到那关,岂不是很冤,流量费了那么多),否则载入速度也慢.这种方式加载资源要用到cc.loader官方文档 ...

  3. CRM——讲师与学生

    一.课程记录和学习记录 1.初始化 course_record, study_record.2.学习记录3.录入成绩4.显示成绩 ajax 查询 柱状图展示成绩 highcharts 5.上传作业(o ...

  4. scss-@mixin

    @mixin指令用于定义混入,它包括任选的变量和参数中的mixin名称后. scss简单示例: @mixin style { .cont{ color: #77C1EF; } } @include s ...

  5. SQLAlchemy的使用---外键ForeignKey数据库创建与连接

    # 一对多建表操作 from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() from sql ...

  6. js原生拖拽

    style样式 <style type="text/css"> #box{ width: 100px; height: 100px; background: deepp ...

  7. 跨平台移动开发_PhoneGap 警告,通知,鸣叫,振动4 种通知类型

    创建鸣叫  使用 confirmation.beep 创建鸣叫 function playBeep() {     navigator.notification.beep(1); } 创建振动  使用 ...

  8. 一键生成http服务器

    如果你想用最简单的方法在内网共享目录,可以考虑为要共享的目录生成一个http服务器,这样就可以在内网任一台设备打开浏览器就可以浏览了.简单举几个例,有了这个http服务器就可以: 在手机浏览器里观看电 ...

  9. ORACLE不使用工具的情况下获取对象DDL

    set line 200set pagesize 0set long 99999set feedback offset echo off获得表.索引.视图.存储过程.函数的DDL:select dbm ...

  10. selenium使用js进行点击

    WebElement button = driver.findElement(By.xpath("/html/body/div[1]/div[3]/h2/div[2]")); Ja ...