// 我们之前是通过 for 循环,生成数组的索引下标,来完成数组的循环
// 实际上数组有专门的循环遍历语法
// for...in forEach
/*
for...in语法 既可以循环数组,可以循环对象
for(var 自定义变量 in 数组名称){
循环体
}
for...in的执行原理
每次循环,获取一个数组的索引下标,存储在 自定义变中
通过自定义变量,就可以使用[]语法,调用数组中的数据信息
存储在自定义变量中的数值是字符串类型
要过执行操作,就要转化为数值类型
*/
var arr = ['北京','上海','广州','重庆','天津'];
for( var i in arr ){
console.log(i);
console.log(arr[i]);
}
// forEach 是数组专用的循环语法,不能循环对象
/*
forEach语法
数组.forEach( 匿名函数 function(形参1,形参2){
JavaScript程序在forEach 的执行中
会自动给两个形参赋值
形参1,JavaScript自动存储数组单元的数据
形参2,JavaScript自动存储数组单元的索引,是数值类型
})
forEach可以直接获取到数组单元的数据信息,不再需要通过[]语法来提取获取
*/
var arr = ['北京','上海','广州','重庆','天津'];
// arr.forEach(匿名函数function(){})
// arr.forEach(function(形参1,形参2){})
// value,形参1,存储的是数组单元的数据,北京,上海,广州,重庆,天津
// key ,形参2,存储的是数组单元的索引,0,1,2,3,4
// 形参是可以任意命名的,只要符合语法跪规范
// 也可以定义一个形参,存储的是数组单元的数据
arr.forEach(function(value,index){
console.log(value,index);
})
// 总结:3种循环语法的对比
// 1,for循环 --- 当需要控制循环执行次数时
// 定义语法最繁琐,但是操作起来最灵活
// 可以修改循环变量的数值,来进行对数组循环的操作
// for...in 和 forEach 都是 JavaScript程序自动给变量存储数据
// 即使我们修改,也会被JavaScript后赋值的数据,覆盖
// 2, for...in 一般对,对象使用,数组一般不适用
// 3, forEach 一般是针对数组的循环
