프로그래밍 언어발행일 2022. 6. 25.원본 https://blog.naver.com/jword_/222788515398 ↗

[자바스크립트] for each / for in / for of반복문의 차이

[자바스크립트] for each / for in / for of반복문의 차이 — #자바스크립트foreach #자바스크립트forof #자바스크립트forin 모르는거 복습한 글 foreach 반복문 foreach...

#Languages#Naver Blog

#자바스크립트foreach #자바스크립트forof #자바스크립트forin

​

모르는거 복습한 글

​

foreach 반복문

foreach 반복문은 ​배열에 쓰이는 반복문이다. 인자로 콜백함수가 들어갈 수 있다.

=>사실 위 문장은 초보자에게 너무 어려운 말이다. 간단하게 풀어서 기억해두자. 배열을 여러군데 쓰고싶을 때 사용하는 도구라고 생각해보자.

​

콜백함수는 다른 함수의 인자로 사용되는 함수, 어떤 이벤트에 의해 호출되는 함수를 뜻한다.

=>이 말도 너무 어렵다 그냥 인자에 함수가 들어간 것으로 우선 해석하자.

​

코딩은 실전을 통해 이해하는게 더 빠르다. 아래 코드를 하나 하나 뜯어 보자. 내가 연습하고있는 음악패널 사이트 예제이다. 블로그에 있는 예제를 통해 공부해보면 좋다.

javascript 코드 예제
                                    const list = frame.querySelectorAll('article');
const names=["Blizzards", "Calm", "Dusty_Road", "Escape", "Payday", "Retreat", "Seasonal", "Vespers"];

 names.forEach((name, index)=>{
    const pic=list[index].querySelector('.pic');
    const h2=list[index].querySelector('.txt h2')
    list[index].style.transform = `rotate(${deg*index}deg) translateY(-100vh) `;
    pic.style.backgroundImage=`url(img/${names[index]}.jpg)`;
    h2.innerText=names[index];

 })

사전 지식이 필요하므로 간단하게 설명해주겠다. list는 간단하게 패널들의 모임이라고 생각하면된다. 총 8개의 패널이 존재한다.

​

list= 네모 박스 패널 / 8개가 있고, 각 요소는 한곳에 겹쳐져있음

​

여기서 names라는 배열을 만들었다. 만든 이유는 이미지 파일을 각 패널에 자동으로 넣기 위함이다. 이미지의 이름은 "Blizzaed.jpg", "Calm" ...등으로 되어있다. 이름을 배열로 만들어 한번에 파일을 넣을 것이다.

​

​

foreach문 분석

names.forEach : 배열이기 때문에 forEach 반복문을 사용하였다.

names.forEach(()=>{}) : 콜백함수가 인수로 들어갔다. 화살표 함수로 간단하게 나타내었다.

names.forEach((name, index)=>{}) : 화살표 함수는 함수의 축약문이다. 원래의 형태라면 function(name,index)=>{}로 표현 된다.

​

\[index\](배열의 순서)

list\[index\].style.transform=rotate(${deg\*index}deg) translateY(-100vh) : list =패널, \[index\] 각 패널의 모든 순번을 순회한다.

list\[0\]~list\[7\]

names 배열의 활용

위에보면 names= \["Blizzards", "Calm", "Dusty\_Road", "Escape", "Payday", "Retreat", "Seasonal", "Vespers"\] 문자열로 된 배열이다.

pic.style.backgroundImage=url(img/${names\[index\]}.jpg) 를 살펴보겠다. pic에 배경이미지를 삽입할 것이다. 여기서 pic은 패널안에 있는 작은 네모 박스라고 생각하면 된다. 즉 패널 안에 이미지를 삽입하는 삽입하기 위한 구문이다.

​

자바스크립트에 스타일 요소를 "배경이미지를"추가하는 .style.backgroundImage를 사용하였다.

​

url은 이미지 파일 경로를 의미한다. img폴더 안에는 Blizzards.jpg , Calm.jpg ... 등 배열과 똑같은 이름을가진 8개의 이미지가 준비되어있다.

여기서 names는 변수이므로 `(백틱)처리를 하여 **url(img/${names\[index\]}.jpg)`**을 삽입한다.

​

아래와 같이 모든패널에 이미지가 각각 들어간다.

이미지

이미지

for in 반복문

객체안을 순회하며 객체의 속성값을 뽑아낸다. 형태는 다음과 같다.

for(let key in woman) = for ( 원하는 변수지정 in 객체명)

javascript 코드 예제
                                    const woman = {
    name : "JANE",
    age : 27,  // age= 으로 선언하지 말 것
    job : "teacher", //반드시 ""를 붙여서 표현하기
}

for(let key in woman){
   console.log(key, woman[key]);
}

이미지

key값을 뽑아내고 value를 뽑고 싶으면, woman\[key\]를 입력하면된다.

​

각 속성 key값과 value값이 차례대로 콘솔에 찍히는 것을 볼 수 있다.

for of 반복문

for of는 배열을 뽑아낼때 사용하는 반복문이다. iterator와 사용하기 적합하다고 하는데, 이해하기 어렵다. 그냥 "배열"로 일단은 기억해두자

​

javascript 코드 예제
                                    const color = ["pink" , "white", "blue"]

for(let el of color){
   console.log(el)
}

결과 : "pink","white", "blue"

이미지

배열의 각 요소를 뽑아내기 좋은 반복문이다.

​

배열에 속해있는 pink, white, blue가 console창에 찍히는 것을 볼 수 있다.

​

​

​

for in vs for of 반복문

많이 헷갈리는 for of와 for in이 어떤 차이가 있는지 테스트 해보았다.

javascript 코드 예제
                                    [for in]
const woman = {
    name : "JANE",
    age : 27,  // age= 으로 선언하지 말 것
    job : "teacher", //반드시 ""를 붙여서 표현하기
}

for(let key in woman){
   console.log(key, woman[key]);
}

for(let el of woman){
  console.log(el);
}

콘솔결과: ??

------------------------------------------------------------------------------------------------------------------------
[for of]
const color = ["pink" , "white", "blue"]

for(let el of color){
   console.log(el)
}

for(let key in color){
   console.log(key)
}

결과 : ??

​

이미지

위와 동일한 객체를 for of로 추출해보았다.

​

객체로 지정해둔 woman이 iterable하지 않는다고 한다. 무슨말인가?

​

사실 for of는 iterator만 반복할 수 있다. 여기서 iterator는 반복자를 의마하는데, 가장 대표적인 예로 배열이있다.

​

결론은 for of는 그냥 배열에서 쓰라는 이야기이다.

이미지

밑에는 배열 color에서 for in 반복문을 시행했다.

​

왠 숫자가 나온다.

​

for in은 key값을 추출한다고 배웠다. 배열의 key으로 index값이 나온듯 하다 (?)

​

사실 해석을 못하겠다 공부가 필요하다

​

결론은 . for in은 객체에서만 사용하라는 이야기였다.

​

​

결론: for of는 "배열"에서 for in은 "객체"에서 원하는 값을 뽑아낼 때 사용하기

​

​