今天在改代码的时候发现有很多代码的循环是用 for(var i in data)写的,我通常都是用for(var i=0;i<data.length;i++)

就查看了一下,原来这两个是有区别的,不能等同使用。

<script>

//

 这是for in
es6里面是for of

Array.prototype.test = function () { };

function a (){
var arr = [1, 2];
for (var i in arr)
{
alert(i+"-------------"+arr[i]);
}
}
function b(){
var arr = [1, 2];
for(var i =0;i<arr.length;i++){
alert(i+"---------"+arr[i]);
}
}
a();
b();
</script>

我们看到a()会弹出三个对话框,分别是索引值:0、1还多了一个 test, 这个 test 是 Array.prototype.test 扩展得到的。

所以不能把 for (var i in data)  当作是 for (var i = 0; i < data.length; i++) 的简写。

JAVASCRIPT 中 FOR (VAR I IN DATA) 循环数组项的更多相关文章

  1. javascript中加var和不加var的区别

    Javascript是遵循ECMAScript标准下的一个产物,自然ECMAScript的标准其要遵循. 先来看下var关键字的定义和用法 var 语句用于声明变量. JavaScript 变量的创建 ...

  2. javascript 中加’var‘和不加'var'的区别,你真的懂吗?

    没看之前千万别说我是标题党,这个问题真的有好多淫都不懂!!! 大家都看了很多文章,都说避免隐式声明全局变量,就是说声明变量前必须加'var',那加了'var'和不加'var'到底有啥区别呢? 先来看一 ...

  3. javascript中的var,let,const关键字

    文章:JavaScript 中 var 和 let 和 const 关键字的区别 比较全面的文章.

  4. JavaScript中的内置对象-8--1.Array(数组)-Array构造函数; 数组的栈方法; 数组的转换方法; 数组的操作方法; 删除-插入-替换数组项; ECMAScript为数组实例添加的两个位置方法;

    JavaScript内置对象-1Array(数组) 学习目标 1.掌握任何创建数组 2.掌握数值元素的读和写 3.掌握数组的length属性 如何创建数组 创建数组的基本方式有两种: 1.使用Arra ...

  5. 详解JavaScript中的Event Loop(事件循环)机制

    前言 我们都知道,javascript从诞生之日起就是一门单线程的非阻塞的脚本语言.这是由其最初的用途来决定的:与浏览器交互. 单线程意味着,javascript代码在执行的任何时候,都只有一个主线程 ...

  6. JavaScript中的var,const,let区别与用法(浅谈)

    let 和 const是(ES6) 新增加了两个重要的 JavaScript 关键字. 1.var全局变量 //全局变量在 JavaScript 程序的任何地方都可以访问 //定义的变量可以修改,如果 ...

  7. JavaScript 中的 Var,Let 和 Const 有什么区别

    一.var 在ES5中,顶层对象的属性和全局变量是等价的,用var声明的变量既是全局变量,也是顶层变量 注意:顶层对象,在浏览器环境指的是window对象,在 Node 指的是global对象 var ...

  8. 在JavaScript中使用json.js:使得js数组转为JSON编码

    在json的官网中下载json.js,然后在script中引入,以使用json.js提供的两个关键方法. 1.数组对象.toJSONString() 这个方法将返回一个JSON编码格式的字符串,用来表 ...

  9. JavaScript 中 如何判断一个元素是否在一个数组中

    <script type="text/javascript"> var arrList=['12','qw','q','v','d','t']; console.log ...

随机推荐

  1. node.js环境安装,及连接mongodb测试

    1.node.js环境安装 npm config set python python2.7npm config set msvs_version 2013npm config set registry ...

  2. OPENVPN

    安装 方法1--源码安装yum -y install  pam pam-devel gcc gcc-c++ lzo lzo-devel openssl openssl-devel wget autom ...

  3. arcgis 10.2连接Oracle

  4. if you end up with a boring miserable life

  5. ajax-服务器响应

    如果需要获得了来自服务器的响应,则使用XMLHttpRequest 对象的 responseText 或 responseXML 属性 responseText: 获得字符串形式的响应数据,当read ...

  6. Dojo特效(翻译)

    http://dojotoolkit.org/documentation/tutorials/1.10/effects/index.html In this tutorial, we will exp ...

  7. mysql新建表示,时间字段timetamp碰到的问题

    在mysql中创建表时,在新加的字段时间上,碰到下面的问题: 建表语句如下: CREATE TABLE seckill( seckill_id bigint NOT NULL AUTO_INCREME ...

  8. C#矩阵运算类库

    这个类库是本人参考许多相关资料之后做出的C#矩阵运算类库,因为C#的数值计算库相对比较少,所以希望这个类库能够给大家带来一些帮助. 源码github网址:https://github.com/Josh ...

  9. Visual Studio 14 初试,vNext

    下了几天的VS 2014 .终于安装上了,花了好几天时间, VS 2014  下载地址, http://www.visualstudio.com/en-us/downloads/visual-stud ...

  10. jvm是如何管理内存的

    1.JVM是如何管理内存的 Java中,内存管理是JVM自动进行的,无需人为干涉. 了解Java内存模型看这里:java内存模型是什么样的 了解jvm实例结构看这里:jvm实例的结构是什么样的 创建对 ...