JAVASCRIPT -

for의 break, forEach의 return false 차이점

  • -

♻️ for의 break,  forEach의 return false 차이점

안녕하세요 TriplexLab 입니다.

오늘은 for문에 break문과 forEach문에 return false문의 차이점을 설명 하다고 히겠습니다.

📝 배경설명

for문과, forEach문 둘다. 동일한 sceneInfo라는 배열 객체를 돌고 있습니다.
그리고 sceneInfo에 있는 scrollHeight값을 더해서 totalScrollHeight라는 변수에 갱신을 해주고 있는 상황 입니다.

💡 차이점

for문에 break문인 경우 : 특정 조건에 바로 break가 됩니다.

forEach문에  return false문인 경우 : 특정 조건에 return false가 되긴 하는데 배열요소를 한번 쭉 돌고
빠져 나옵니다.

 const sceneInfo = [
        {
            // 0
            heightNum: 5, //각 섹션의 5배로 scrollHeight 세팅
            scrollHeight: 0,
        },
        {
            // 1
            heightNum: 5, //각 섹션의 높이의 5배로 scrollHeight 세팅
            scrollHeight: 0,
        },
        {
            // 2
            heightNum: 5, //각 섹션의 높이의 5배로 scrollHeight 세팅
            scrollHeight: 0,
        },
        {
            // 3
            heightNum: 5, //각 섹션의 높이의 5배로 scrollHeight 세팅
            scrollHeight: 0,
        }
];

 

// for문 예시)

let currentScene = 0; //현재 활성화된 값

// 중간코드...

let totalScrollHeight = 0;
for(let i = 0; i < sceneInfo.length; i++) {
	totalScrollHeight += sceneInfo[i].scrollHeight;
	if(totalScrollHeight >= window.pageYOffset){
		currentScene = i;
		break;
	}
}

document.body.setAttribute('id', `show-scene-${currentScene}`);

 

// every문 예시)

let currentScene = 0; //현재 활성화된 값

// 중간코드...

let totalScrollHeight = 0;
sceneInfo.every((ele, idx) => {
	totalScrollHeight += sceneInfo[idx].scrollHeight;
	if(totalScrollHeight >= window.pageYOffset){
		currentScene = idx;
		return false;
	}
	return true;
});

 document.body.setAttribute('id', `show-scene-${currentScene}`);

 

// forEach문 예시)

let currentScene = 0; //현재 활성화된 값

// 중간코드...

let totalScrollHeight = 0;
sceneInfo.forEach((ele, idx) => {
 	totalScrollHeight += sceneInfo[idx].scrollHeight;
 	if(totalScrollHeight >= window.pageYOffset){
 		currentScene = idx;
 		return false;
 	}
 });
 
 document.body.setAttribute('id', `show-scene-${currentScene}`);

 

📗정리

전 평소에 forEach문과, reducer문을 즐겨 쓰는 편입니다.
어떤 DOM 요소를 루프하면서 조회하고 특정 조건을 만족하면 그만루프하고 빠져나와 라는 작업을 힐때는
for문의 break를 사용하거나, every 함수를 사용해서 return true;을 마지막에 넣어서 빠져나오는것도 또하나의 방법 이 됩니다.

하지만 DOM 요소를 계속 루프해서 어떤 작업을 진행만 할때는 forEach, reduce... 등등을 활용하면 좋을것 같다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.