js für 、 foreach 、 für in 、 für von 的 区别

In der Entwicklung durchlaufen wir häufig Arrays oder Objekte, häufig verwendete Methoden wie for, foreach, for, for of. Daher werden wir heute die Verwendung dieser Methoden diskutieren
: 1. for loop:
for loop wird häufig in In the array verwendet ist die Bedienung auch sehr einfach

for(let i=0,len=array.length;i<len;++i){
    
    
  console.log(array[i])
}

Auf diese Weise kann jedes Element im Array durchlaufen werden, und die Schleife
kann durch Unterbrechung oder Rückgabe beendet werden. Warum kann sie das Objekt nicht durchlaufen? Offensichtlich hat das Objekt nicht die Eigenschaft length.

2. Foreach-Schleife:

array.foreach((item,index)=>{
    
    
	console.log(item,index)
)}

Die Schreibmethode ist prägnanter als für, aber der größte Unterschied zwischen ihr und for besteht darin, dass sie nicht break oder return verwenden kann, um aus der Schleife zu springen. Wenn Sie aus der Schleife springen müssen, müssen Sie try ... catch verwenden ...

try{
    
    
array.foreach((item,index)=>{
    
    
	if(some===item){
    
    
	  throw error
	}
)}
}catch(error){
    
    

}

3.for in wird normalerweise zum Durchqueren von Objekten verwendet

const obj={
    
    a:1,b:2}
for(let key in obj){
    
    
console.log(key ,obj[key])  //a ,1   b ,2
}

Zusätzlich zum Durchlaufen der Eigenschaften des Objekts selbst können Sie natürlich auch die Eigenschaften des Objektprototyps durchlaufen, zum Beispiel:

const obj={
    
    a:1,b:2}
obj.prototype.c=3;
for(let key in obj){
    
    
	console.log(key ,obj[key])  //a,1   b,2  c,3
}

Aber was ist, wenn wir dies verwenden, um das Array zu durchlaufen?

const array=[1,2,3,4]
for(let key in array){
    
    
	console.log(key ,array[key])  //0,1 1,2 2,3 3,4
}

Arrays sind auch Objekte in der Natur, daher haben Arrays auch Prototypen. Angenommen, wir fügen dem Prototyp des Arrays auch Attribute hinzu, zum Beispiel:

const array=[1,2,3,4];
array.prototype.addPrototype=5;
for(let key in array){
    
    
	console.log(key ,array[key])  //0,1 1,2 2,3 3,4  addPrototype,5
}

4. Für Wenn die Prototypmethode oder das Prototypattribut zum Array hinzugefügt wird, möchten wir die Methode für den Prototyp nicht durchlaufen, dann bietet ES6 eine solche Methode, hauptsächlich um die Fehler von for in auszugleichen.

const array=[1,2,3,4];
array.prototype.addPrototype=5;
for(let key of array){
    
    
	console.log(key ,array[key])  //0,1 1,2 2,3 3,4
}

For kann jedoch nicht zum direkten Durchlaufen von Objekten verwendet werden. Andernfalls wird "obj ist nicht iterierbar" gemeldet. Wenn wir dies zum Durchlaufen von Objekten verwenden möchten, müssen wir die Object.keys () -Methode verwenden

const obj={
    
    a:1,b:2}
for(let key of Object.keys(obj)){
    
    
    console.log(key)
}

Zusammenfassung:
1. Die leistungsstärkste Funktion ist für in, mit der Arrays und Objekte durchlaufen werden können.
2. Abgesehen davon, dass foreach nicht break oder return verwenden kann, um aus der Schleife zu springen, ist alles andere in
Ordnung . 3. for in wird normalerweise zum Durchlaufen verwendet Objekte, die anderen sind Traversal-Arrays

Ich denke du magst

Origin blog.csdn.net/weixin_43169949/article/details/102750920
Empfohlen
Rangfolge