for, foreach, for in, for of 的 区别

개발 과정에서 우리는 종종 배열이나 객체, 즉 for, foreach, for in, for of와 같이 일반적으로 사용되는 메소드를 탐색하므로 오늘은 이러한 메소드의 사용법에 대해 논의 할 것입니다. 1.
for 루프 :
for 루프는 In the array에서 자주 사용됩니다. , 사용법도 매우 간단합니다

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

이러한 방식으로 배열의 각 항목을 순회
할 수 있고 루프 break 또는 return으로 종료 할 수 있습니다. 왜 객체를 순회 할 수 없습니까? 분명히 객체에는 길이 속성이 없습니다.

2. Foreach 루프 :

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

쓰기 방법은 for보다 간결하지만 for와의 가장 큰 차이점은 break 또는 return을 사용하여 루프에서 점프 할 수 없다는 것입니다. 루프에서 점프해야하는 경우 try ... catch를 사용해야합니다. ...

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

}

3.for in은 일반적으로 객체를 횡단하는 데 사용됩니다.

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

물론 객체 자체의 속성을 탐색하는 것 외에도 다음과 같이 객체 프로토 타입의 속성을 탐색 할 수도 있습니다.

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
}

그러나 이것을 사용하여 배열을 순회하면 어떨까요?

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

배열도 본질적으로 객체이므로 배열에도 프로토 타입이 있습니다. 배열의 프로토 타입에 속성을 추가한다고 가정합니다. 예를 들면 다음과 같습니다.

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. For of 프로토 타입 메소드 또는 속성이 배열에 추가 될 때 프로토 타입에서 메소드를 탐색하지 않으려는 경우 ES6는 주로 for in의 결함을 보완하기 위해 이러한 메소드를 제공합니다.

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 of는 객체를 직접 순회하는 데 사용할 수 없습니다. 그렇지 않으면 "obj is not iterable"을보고합니다. 이것을 사용하여 객체를 순회하려면 Object.keys () 메서드를 사용해야합니다.

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

요약 :
1. 가장 강력한 함수는 for in으로 배열과 객체를 순회 할 수 있습니다
2. foreach가 break 또는 return을 사용하여 루프에서 점프 할 수 없다는 점을 제외하면 다른 모든 것은
괜찮습니다 . 3. for in은 일반적으로 순회에 사용됩니다. 객체, 나머지는 순회 배열

추천

출처blog.csdn.net/weixin_43169949/article/details/102750920