js中for-innの坑
3284 ワード
var arr=[1,2,3]
1.伝統forサイクル
2.for in for inというサイクルiはstringタイプの です.が配列に作用するfor-i-n循環体は配列要素を巡回するだけでなく、自身のエニュメレート・属性 も存在する.オブジェクトのプロトタイプに方法を加えると、for inというサイクルは配列プロトタイプチェーン上の属性をすべてアクセスすることができます. は、場合によっては、このコードは、ランダムな順序で配列要素を巡回することができる. は、つまり、for-innは通常のオブジェクトのために設計されており、文字列タイプのキーを遍歴することができますので、配列遍歴には適用されません.
3.forEachサイクル
forEach法は配列の各要素に対して一回に提供される関数を実行することで、s 5操作配列の一つの方法である.
ES 6 for-ofサイクル
for...ofはキーの値を遍歴することを許可します.
for…of循環内部で呼び出したのはデータ構造のSymbol.iterator方法です.
1.伝統forサイクル
//
for(var i=0;i
// return
function a(){
for(var i=0;i
標準的なforサイクルの中でiはnumberタイプです.break、continue文が使えます.//
var obj={name:'cc',aa:10};
var keys=Object.keys(obj);// ["name", "aa"]
for(var i=0;i
短所:このような書き方は面倒くさいし、相手を遍歴するのに不便です.2.for in
for(var i in arr){}
for in//
Array.prototype.test=function(){}
arr.name='jq'
for(var i in arr){
console.log(typeof i);//"string"
console.log(i);//"0","1","2","name","test"
console.log(arr[i]);//1,2,3,jq,ƒ (){}
}
// json
Object.prototype.aa=function(){}
var json={'name':111}
for(var i in json){
console.log(i);//"name","aa"
console.log(json[i]);//111,ƒ (){}
}
for inを使用すると発生する可能性のあるエラーが発生します.1.もしある日、Js原生のAray類を拡張するために、外部のjsフレームを導入しても、元のArayを拡張します.問題はすぐ来ます.この提案は2時2分であり、無意識のうちに文字列演算を行う可能性があります.例えば、「2」+1=「21」は符号化過程に大きな不便をもたらします.3.forEachサイクル
forEach法は配列の各要素に対して一回に提供される関数を実行することで、s 5操作配列の一つの方法である.
arr.aa=12;
arr.forEach(function(item,index,arr){
console.log(item);//1,2,3
})
// return
arr.forEach(function(item,index,arr){
return;
console.log(item);//1,2,3
})
// return
function a(){
arr.forEach(function(item){
console.log(item);
return 7;
})
}
a()
// break,continue
var arr=[1,2,3,4];
arr.forEach(function(item,index,arr){
break;
//continue;
console.log(item);
})
// VM3387:2 Uncaught SyntaxError: Illegal break statement
// Illegal continue statement: no surrounding iteration statement
短所:途中でforEachサイクルから出られません.continue、break命令またはreturn命令は効果がありません.ES 6 for-ofサイクル
for...ofはキーの値を遍歴することを許可します.
for…of循環内部で呼び出したのはデータ構造のSymbol.iterator方法です.
arr.foo='hello'
for (let a of arr) {
console.log(a); //1,2,3
}
//for...of return
for(let i of arr){
console.log(i);
return;
}
// :Illegal return statement
//break
for(let i of arr){
console.log(i);//1
break;
}
//continue
for(let i of arr){
if(i==1){continue;}
console.log(i);//2,3
}
// return
function a(){
for(let i of arr){
console.log(i);
return;
}
}
a();//1
:
- for...in , , for...in 。
- forEach , break、continue return 。
- 。
- for...of 、Set Map 、 ( arguments 、DOM NodeList )、 Generator , 。