R JavaScript の for..in サイクル トラップ
JavaScript には 2 つの方法があることは誰もが知っています: (1) for ループ (2) for..in サイクル;配列オブジェクトを反復するための for ループは誰にとっても一般的なものでなければなりません。ただし、for..in ループを使用する場合は、誰もが注意する必要があります。なぜそう言えるのでしょうか。皆さん、私の話を聞いてください... javascript は、オブジェクトのプロパティまたは配列の各要素、for.. のプロパティを反復するために使用される特別なループ (つまり、for..in ループ) を提供します。 in ループ内のループ カウンタは数値ではなく文字列です。これには、現在のプロパティの名前または現在の配列要素のインデックスが含まれます。 ケース 1://使用for..in循环遍历对象属性 varperson={ name: "Admin", age: 21, address:"shandong" }; for(vari in person){ console.log(i); }
//使用for..in循环遍历数组 vararray = ["admin","manager","db"] for(vari in array){ console.log(i); }
var array =["admin","manager","db"]; //给Array的原型添加一个name属性 Array.prototype.name= "zhangsan"; for(var i in array){ alert(array[i]); }
さて、もう一度 for ループを使用すると何が起こるでしょうか?
vararray = ["admin","manager","db"]; //给Array的原型添加一个name属性 Array.prototype.name = "zhangsan"; for(var i =0 ; i<array.length; i++){ alert(array[i]); };
vararray = ["admin","manager","db"]; Array.prototype.name= "zhangshan"; for(vari in array){ //如果不是该对象自身直接创建的属性(也就是该属//性是原型中的属性),则跳过显示 if(!array.hasOwnProperty(i)){ continue; } alert(array[i]); }