for in 循环 和for循环 for of循环
for in 循环得到的是数组的key值
for in 循环用以遍历对象的属性
var scores=[10,11,12];
var total=0;
for(var score in scores){
console.log(score);// 0 1 2
console.log(typeof score);//string key值的类型为字符串
total+=score;//total本身是number类型,但是由于number类型和string类型向加,会得到字符串类型,属于字符串拼接
}
console.log(total);//0012 所以最终的结果是0012
for in 循环的缺点
for(var index in arr){
console.log(arr[index]) //数组的value值
}
- 代码中赋值为
index的值是字符串"0", "1","2"等,而不是真是的数字。由于你不想要碰到字符串计算("2" + 1 == "21")的状况,这对于编程而言是极其不方便的。 - 循环体不仅仅会遍历数组元素,还会遍历任意其他的自定义添加的属性。例如,如果数组包含了一个不能枚举的属性
myArray.name,那么这次循环就会在index == "name"的时候额外执行一遍。甚至数组原型链上的属性也都会被遍历到。 - 最让人感到惊奇的是,在某些状况下,这段代码会以随机顺序循环数组元素。
- 简而言之,
for-in循环在设计之初就是用于普通的以字符串为 key 值的对象的语法,而不适用与数组。
for循环得到的是数组的value值
var a=0;
var scores=[10,11,12];
for(var i=0;i<scores.length;i++){
console.log(scores[i])// 10 11 12
console.log(typeof scores[i])//number
a+=scores[i];//所以此时属于数字相加
}
console.log(a);//33 最后得到的结果是33
所以引起此变化的根本原因在于数组的key值的类型为string,而value的值为number
for的理解
/*
因为当循环结构执行完时 i是等于9 的
但是由于for循环条件的第三个是i++,是后加加,
那么当结束循环的时候 i 还会自加1;所以执行完后i=10,此时跳出循环所以输出的i为10
*/for(var i=0;i<10;i++){
console.log(i) //0 1 2 3 4 5 6 7 8 9
}
console.log(i) //10
//用来计数的循环变量泄露为全局变量。
---------------------------------------------------------------------于2017/12/28补充-----------------------------------------------------------------------------------
在ES5中 forEach ,缺点:无法使用 break 语句跳出循环,或者使用 return 从函数体内返回。
var arr=['Jane',16,'female']
for(var value of arr){
console.log(value) //依次输出Jane 16 female
}
在ES6中新添加了for of循环
for-of 循环用以遍历数据 -- 就像数组中的值一样
var arr=['Jane',16,'female']
for( var value of arr ){
console.log(value) //依次输出Jane 16 female
}
---------------------------------------------------------------------于2018/03/01补充-----------------------------------------------------------------------------------
for 循环还有一个特别之处,就是设置循环变量的的那部分是一个父级作用域,而循环体内部是一个单独的子集作用域
for(let i=0;i<3;i++){
let i = 'abc'
console.log(i)
}
//abc
//abc
//abc
for in 循环 和for循环 for of循环的更多相关文章
- ios开发环境 分支语句 、 循环结构(for) 、 循环结构
1 完成命令解析程序 1.1 问题 有命令解析程序,该程序提供三个功能选项供用户选择,用户选择某功能后,程序在界面上输出用户所选择的功能名称.程序的交互效果如图-1所示: 图-1 由上图可以看出,程序 ...
- for循环的表达规则,for循环的嵌套,跳转语句;穷举;迭代;异常处理
for循环的基本格式 for(表达式1:表达式2:表达式3) { 循环体: } for循环的四要素 表达式1就是变量初始化:表达式2就是循环条件:表达式3是状态改变 static void Main( ...
- 房上的猫:for循环,跳转语句与循环结构,跳转语句进阶
一.for循环 1.定义: for循环语句的主要作用是反复执行一段代码,直到满足一定条件为止 2.组成部分: (1)初始部分:设置循环的初始状态 (2)循环体:重复执行的代码 (3)迭代部分: ...
- JavaScript-//FOR/IN循环。当使用for/in循环遍历关联数组时,就可以清晰地体会到for/in的强大之处。
<script> //FOR/IN循环.当使用for/in循环遍历关联数组时,就可以清晰地体会到for/in的强大之处. function getvalue(portfolio){ var ...
- Spring 循环引用(一)一个循环依赖引发的 BUG
Spring 循环引用(一)一个循环依赖引发的 BUG Spring 系列目录(https://www.cnblogs.com/binarylei/p/10198698.html) Spring 循环 ...
- 选择排序是外面循环的array[i]与内循环的array[j]比较。冒泡排序是内循环的相邻两个值做比较修改
选择排序是外面循环的array[i]与内循环的array[j]比较.冒泡排序是内循环的相邻两个值做比较修改
- Windows 消息循环(2) - WPF中的消息循环
接上文: Windows 消息循环(1) - 概览 win32/MFC/WinForm/WPF 都依靠消息循环驱动,让程序跑起来. 本文介绍 WPF 中是如何使用消息循环来驱动程序的. 4 消息循环在 ...
- for循环和增强版的for循环
增强的for循环. 缺点: 对于数组.不能方便的訪问下标值. 对于集合,与使用Interator相比.不能方便的删除集合中的内容(在内部也是调用Interator). 除了简单遍历并读取当中的 ...
- Java循环结构之while和do-while循环
循环结构知识点 本章技能目标 1理解循环的含义 2会使用while循环 3会使用do-while循环 4会使用调试解决简单的程序错误 一. 循环的含义 循环就是重复的做……(Java程序中的循环结 ...
- Effective JavaScript Item 49 对于数组遍历,优先使用for循环,而不是for..in循环
本系列作为Effective JavaScript的读书笔记. 对于以下这段代码,能看出最后的平均数是多少吗? var scores = [98, 74, 85, 77, 93, 100, 89]; ...
随机推荐
- python list中append()方法和extend()方法区别
共同点 只能作用于list类型(不能作用于tuple等其他类型) 单参数限制(不支持多参数) 不同点 list.append(object) 向列表中添加一个对象object. 使用append的时候 ...
- 【Python深入】Python中继承object和不继承object的区别
python中定义class的时候,有object和没有object的不同?例如: class Solution(object): class Solution(): 这俩的区别在于—————— 在p ...
- [Java核心技术]第四章-对象与类(4.1-4.6总结)
4.1面向对象程序设计概述 OOP(面向对象编程Object Oriented Programming) OOP中数据第一位,算法第二位. 类 封装:关键在于不能让其他方法直接访问类的实例域,程序仅通 ...
- Scrapy反爬
1,随机更换 user-agent: 将足够多的user-agent放在settings中,在parse方法中调用 缺点:每一个request中都要调用这个方法 这个是scrapy的流程图. 既然每一 ...
- [leetcode]21. Merge Two Sorted Lists合并两个链表
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing t ...
- php curl请求回来的中文为乱码
在浏览器访问回来的编码格式是正常的,但是从php curl 请求过来的确实乱码,之前也试过这个函数好像不行,今天吧最后一个参数换了,简单粗暴,可以了mb_convert_encoding($res, ...
- python小练习:使用循环和函数实现一个摇骰子小游戏。游戏规则如下:游戏开始,首先玩家选择Big or Small(押大小),选择完成后开始摇三个骰子,计算总值,11<=总值<=18为“大”,3<=总值<=10为“小”。然后告诉玩家猜对或者是猜错的结果。
python小练习:使用循环和函数实现一个摇骰子小游戏.游戏规则如下:游戏开始,首先玩家选择Big or Small(押大小),选择完成后开始摇三个骰子,计算总值,11<=总值<=18为“ ...
- class空格多类名
1.class属性唯一但是有空格,选择空格两边唯一的哪一个 <div id="tempConfigTable" class="dtb-style-1 table-d ...
- angular2 学习
一,angular2脚手架搭建 1,安装node 2,安装淘宝镜像 npm install -g cnpm --registry=https://registry.npm.taobao.org 3,搭 ...
- zeromq学习记录(八)负载均衡 附ZMQ_ROUTER的流程分析
/************************************************************** 技术博客 http://www.cnblogs.com/itdef/ ...