【JavaScript】in的使用,for循环in,和java的foreach循环的区别

【JavaScript】in的使用,for循环in,和java的foreach循环的区别

最近疑惑js的in的使用了,特意百度了一下,特此记录笔记,以备后用。

警告:for…in有个缺陷,对数组的循环尽量避开使用 !!!

使用

for(var variable in obj) { ... }

其中,obj可以是个对象,也可以是个数组。
实验开始:

1. javascript的in循环对象:

上代码:

var array = [ 'a', 'b', 'c', 'd' ];
for ( var cha in array) {
	console.log(cha);
}
console.log(3 in array);

控制台打印:

0
1
2
3
true
2. javascript的in循环数组:
var men = {};
men.name = '小丽';
men.sex = 0;
men.age = 18;

for ( var cha in men) {
	console.log(cha);
}
console.log('name' in men);

控制台打印:

name
sex
age
true

结论

假设是循环js对象,那么在遍历中得到的是对象的属性的名字,而不是属性相应的值。
假设是循环js数组,那么在遍历中得到的是数组的下标。

延伸阅读

1、对被删除的属性使用in,会返回false;
2、对值为 undefined 的属性使用in,会返回true;
3、如果一个属性是从原型链上继承来的,in 运算符也会返回 true;

	var men = {};
	men.name = undefined;
	console.log('name' in men); //true
	delete men.name;
	console.log('name' in men); //false
	
	var array = [ 'a', 'b'];
	console.log(1 in array); //true
	delete array[1];
	console.log(array[1]);  //undefined
	console.log(1 in array);  //false

	var obj = new Object();
	obj.valueOf();
	console.log("valueOf" in {}); //true
	console.log("toString" in {}); //true
	console.log("length" in {});  //false

和Java的不同:

1、用法:js用 in 特殊字符,java用 : 分号;
2、循环的值:js如果循环的是对象,得到的是下标;而java的foreach循环枚举一个数组或者任何实现了Iterable接口的对象的时候,得到的是下面的元素,而非下标;并且java的foreach循环不会枚举一个对象的属性。


<如有不足请指教,如觉得有用麻烦给个小心心哟^_^ >
---------------------------- The End -------------------------------

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值