JavaScript中for循环和for in 循环的区别

来源:互联网 发布:极品网络女神sally 编辑:程序博客网 时间:2024/04/30 01:23
//在遍历数组上的异同
var arr = ['a','b','c'];for(var i = 0;i < arr.length;i++){console.log(typeof(i));//numberconsole.log(arr[i]);//a,b,c}var att = ['a','b','c'];for(var j in att){console.log(typeof(j));//stringconsole.log(att[j]);//a,b,c}

for循环和for in循环都可以遍历获取到数组的内容;

for循环获取数组下标的typeof类型为number;

for in 循环获取数组下标的typeof类型为string;


//在遍历对象上的异同
var obj = new Object({name:"Simon",age:"16",city:"BJ"});console.log(obj.length);//undefinedfor(var i = 0;i < obj.length;i++){console.log(i);//空的console.log(obj[i]);//空的}for(var j in obj){console.log(j);//name,age,cityconsole.log(obj[j]);//simon,16,BJ}

for循环不能用于循环对象,因为for循环无法获取obj.length,所以for循环只能用于数组操作;

for in 循环可以获取对象的键值,可以操作数组,还可操作对象;

-----------------------------------------分割线-----------------------------------------------------------

但是:在操作数组的性能上:for循环的性能要高于for in 循环;



贺师俊老师在知乎说到(链接:https://www.zhihu.com/question/38472789/answer/76649492):

for...in 效率是最低的。这是因为 for...in 有一些特殊的要求,包括:
1. 遍历所有属性,不仅是 own properties 也包括原型链上的所有属性。
2. 忽略 enumerable 为 false 的属性。
3. 必须按特定顺序遍历,先遍历所有数字键,然后按照创建属性的顺序遍历剩下的。




原创粉丝点击