JavaScript中的for/in语句

• 定义与用法

for/in 语句用于循环对象属性。循环中的代码每执行一次,就会对数组的元素或者对象的属性进行一次操作。
注意:不要使用for/in 语句来循环数组的索引,可以使用for语句来代替。

• 语法:

for (var el in object) { //执行的代码块 }

参数 可省略?
el 必须 指定的变量可以是数组元素,也可以是对象的属性。
object 必须。指定迭代的的对象。
•描述:

for...in 循环只遍历可枚举属性。像 Array 和 Object 使用内置构造函数所创建的对象都会继承自 Object.prototype 和 String.prototype 的不可枚举属性,例如 String 的 indexOf() 方法或者 Object 的 toString 方法。循环将迭代对象的所有可枚举属性和从它的构造函数的 prototype 继承而来的(包括被覆盖的内建属性)。

用for/in语句可以遍历一个对象"可枚举"的属性,但并非一个对象的所有属性都是可枚举的,通过JavaScript代码添加到对象的属性是可枚举的,而内部对象的预定义属性(如方法)通常是不可枚举的.

• 案例

先来看看for/in在遍历数组和对象上有什么区别

  • 遍历数组
var arr = ['a','b','c'];
var keys = [];
var values = [];
for(var k in arr){
    keys.push(k);
    values.push(arr[k])
}
console.log(keys);    //["0", "1", "2"]
console.log(values);  //["a", "b", "c"]
  • 遍历对象
var obj = {a:1 ,b:2 ,c:3}
var keys = [];
var values = [];
for(var k in obj){
    keys.push(k);
    values.push(obj[k])
}
console.log(keys);  //["a", "b", "c"]
console.log(values);  // [1, 2, 3]

//遍历数组时k代表的是数组的索引值
遍历对象时k代表的是对象的键名,所以说不适合遍历数组,性能不佳


4.1
var stu = {
    name : 'zhou',
    age : 12,
    sex : 'girl'
};
var content = '';
for(var key in stu){
 content += key + ":" + stu[key] + '  ,'
}
"name:zhou  ,age:12  ,sex:girl  ,"

4.2
var myarr = new Array('red','pengxl','china');
var content2 = ''
for(var key in myarr){  
    content2 += key+':'+myarr[key]+' ,';  
} 
"0:red ,1:pengxl ,2:china ,"

4.3
For 与 for/in
对对象的for(var i=0;i

参考资料:
1.MDN :https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array
2.菜鸟教程:http://www.runoob.com/jsref/jsref-obj-array.html

你可能感兴趣的:(JavaScript中的for/in语句)