//遍历数组访问的是下标for(let i in arr){
document.write(arr[i])
console.log(i);//遍历的是数组的index 01234}//1234567//遍历对象访问的是对象的key值var obj={a:1,b:2,c:3,d:4}for(let key in obj){
console.log(key);//a b c d
console.log(obj[key]);//1 2 3 4}//遍历类数组functionfn(){
console.log(arguments);
arguments.name ='haHa'for(let i in arguments){//for in 遍历类数组,会遍历所有key值,包括其他自定义属性//console.log(i + ':' + arguments[i]);
console.log(i);//a b c name}}fn('a','b','c')
for of
for of 遍历数组遍历的是value;for of遍历类数组,遍历的也是value,但它不会遍历自定义属性
let arr=[a,b,c,d];for(let i of arr){
console.log(i);//a,b,c,d}//遍历类数组functionfn(){
console.log(arguments);
arguments.name ='haHa'//name就是自定义属性for(let i of arguments){
console.log(i +':'+ arguments[i]);//undefined
console.log(i);// a,b,c }}fn('a','b','c')
常规遍历对象会报错;需要配合object.keys才能遍历对象
var obj ={
name:'tom',
age:12,
friend:['jerry','jnm']}for(let i of obj){//Uncaught TypeError: obj is not iterable//for of 无法直接遍历对象
console.log(i);}//解决方法
console.log(Object.keys(obj));var Obj = Object.keys(obj)
console.log(Obj);//Object.keys方法会把对象的key返回成一个数组,遍历的不再是对象,而是对象的keyfor(let i of Obj){
console.log(i +':'+ obj[i]);}