js中的in


前端

零度逍遥

2016-01-03 11:09:48

关于js中的关键字in,我们使用最多的大概就是for…in循环了,可以用来遍历数组和对象,而其实除了循环以外,in还可以用来判断。

判断数组或者对象中是否有某个键名,如:

2 in ['a','b','c']  // true
"b" in {"a":1,"b":2} //true
注意in只判断键名,不问键值,比如:

var obj1 = {"a":1,"b":2};
obj.b = undefined;
"b" in obj1;  //true
var obj2 = {"a":1,"b":2};
obj.b = null;
"b" in obj2;  //true
var arr= ['a','b','c'];
arr[2] = undefined;
2 in arr;  //true
以上几种情况,键值不论设为什么,in只判断键名。还有一个情况:

var obj = {"a":1,"b":2};
delete obj.b;
"b" in obj;  //false
delete 会删除对象的属性,这样in就返回false了。

in只能用来判断数组和对象,不能判断其他类型,只会返回布尔值,所以在有些判断中还是很有用的。