in运算符

JavaScript018

in运算符,第1张

in 运算符用来判断一个对象指定的属性是否在该对象或其原型链上。如果是返回 true ,否则返回 false 。

语法 : prop in objectName 。

参数 : prop :一个字符串类型或者 symbol 类型的属性名或者数组索引(非symbol类型将会强制转为字符串)

objectName :检查它(或其原型链)是否包含具有指定名称的属性的对象。

构造函数Person,在Person的原型上添加属性age,并创造出实例person

检测:

更多请参考: 谈谈JS中的运算符:in和instanceof

in 运算符并不是直接在数组中查找是否存在指定的值!

如果右边是数组左边是数字,会把左边的数字 (字符串形式的也可以如 "2" in arr 等于 2 in arr)当成一个索引去检查,如果索引是合法的就返回true。

如果右边是数组左边是字符串 比如"id",会把左边的值当成一个属性去检查,如果找到该属性就返回true。

如果右边是对象这个时候不管左边字符串还是数字,会把左边的值当成一个属性去检查,如果找到该属性就返回true。

所以在上面的例子中:

第一个  ("b" in arr)中的 "b" 不是索引,arr中也没有这个属性 故返回 false.

第二个  (4 in arr)中的 4  是合法索引(上面的arr的合法索引是0-4),故返回 true.

var arr,str=""

意图并不是让arr的值成空,而是初始化变量~并且如果已经声明过的话,就初始化值为空。

for( arr in myArray){

这是一个数组的遍历~ arr只是这个循环里面的内部变量,表示数组的键值。

第一次是0 ,第二次是1 。。。一直到数组的最大键值 4.然后跳出循环。

alert(str) //这样alert,你就能看到arr每次的值~