js中的控制结构for-in语句

var arr=['赵','钱','孙','李'];
for(var i=0;i<arr.length;i++){
console.log(arr[i]);
}

var obj={
name:'li',
age:20,
area:'ni' }
for(var k in obj){
console.log(k+'~'+obj[k])
}

for in语句循环会枚举对象的每一个属性

console.log(k)打印的是每一个键,即name,age,area

console.log(k+'~'+obj.k)打印obj.k是对象的k属性,但是我们要把k的值当做obj的属性,这样就产生歧义了,所以打印出来是undefined

console.log(k+'~'+obj[k])打印出来是name~li   age~20  area~ni

console.log(k+'~'+obj['k'])如果想要获得obj名称叫做‘k’的属性,就可以这样来写,此时打印出来是undefined,因为obj没有这样的属性值

console.log(k+'~'+obj['age'])因为obj有这样的属性值,因此打印出来是name~20 age~20 area~20

for in语句循环会枚举对象的每一个属性

例如 

var window;
for(var k in window){
console.log(k);
}

打印

external
 chrome
 document
 k
 speechSynthesis
 caches
 localStorage
sessionStorage
 webkitStorageInfo
 indexedDB
 webkitIndexedDB
 ondeviceorientation

……

 
原文地址:https://www.cnblogs.com/autismtune/p/5159897.html