js中关键字in的用法,以及for...of,forEach

(变量 in 对象)
1.当"对象"为数组时,"变量"是指数组索引(下标);判断数组是否存在该索引,返回boolean
2.当"对象"为对象时,"变量"是指对象的属性;检测对象中是否有此属性,返回boolean

var myArr = ['yh','zf','14','16'];
console.log('yh' in myArr);//false
console.log(1 in myArr);//true
var obj4 = {
    name : '小明',
   	age : 18,
    sex : '男'
 };
 console.log('name' in obj4);//true
 console.log(1 in obj4);//false

for…in
对对象进行遍历;原理:自己维持遍历条件,当前对象有几个属性,那么就执行几次
1.当"对象"为数组时,定义的变量k,接收的是数组的索引(下标)

***注意:***for…in在对数组的进行遍历时,因为数组也是一个对象,所以也会将其对象的属性遍历出来。所以数组的遍历一般使用for…of或者forEach

var myArr = ['yh','zf','14','16'];
myArr[7] = '7';
myArr.name = 'yang';
for(var k in myArr){
  	console.log(myArr[k]);
  	console.log(k);
};

输出为

yh
0
zf
1
14
2
16
3
7
7
yang
name

2.当"对象"为对象时,定义的变量K ,用来接收属性名

var obj4 = {
    name : '小明',
   	age : 18,
    sex : '男'
};
for(var k in obj4){
  	console.log(obj4[k]);
    console.log(k);
};

输出为

小明
name
18
age
男
sex

注:对象进行属性的调用时,可以把点号换成[字符串的属性]

var obj4 = {
    name : 'yh',
   	age : 18,
    sex : '男'
};
console.log(obj4.name);//yh
console.log(obj4['name']);//yh

for…of

var myArr = ['yh','zf','14','16'];
for(var k of myArr){
  	console.log(myArr[k]);
  	console.log(k);
}

输出

undefined
yh
undefiend
zf
undefined
14
undefiend
16
undefiend

for…of中,k接收的就是数组的值(不会接收到索引)

forEach

myArr.forEach(function(v,k){
  	console.log(k+"="+v);
})

输出

0=yh
1=zf
2=14
3=16

函数中传的第一个形参接收数值,第二个接收索引

你可能感兴趣的:(js,javascript,js)