Notice
Recent Posts
Recent Comments
Link
쯔이's Dev
JS(8). NodeList, forEach, 화살표함수 본문
반응형
1. NodeList란?
NodeList는 JavaScript에서 DOM 요소를 선택할 때 반환되는 "노드들의 리스트".
노드는 HTML 문서의 모든 구성 요소를 말한다.
- 브라우저가 HTML 문서를 읽고 DOM(Document Object Model)을 생성하는데, 이 DOM을 구성하는 기본 단위.
예를 들어, document.querySelectorAll() 같은 메서드를 사용하면, 조건에 맞는 모든 요소를 NodeList 형태로 반환한다.
* 특징
- 유사 배열(Iterable):
- NodeList는 배열처럼 순회(for, forEach)할 수 있다.
- 하지만 실제 배열은 아니다. 예를 들어, push 같은 배열 메서드는 사용할 수 없다.
- NodeList에서 사용할 수 없는 배열 메서드
push 배열의 끝에 요소를 추가 pop 배열의 마지막 요소를 제거 shift 배열의 첫 번째 요소를 제거 unshift 배열의 맨 앞에 요소를 추가 splice 배열의 특정 위치에서 요소를 추가/삭제 slice 배열의 일부분을 새 배열로 반환 concat 두 배열을 합쳐 새 배열을 생성 includes 배열에 특정 요소가 포함되어 있는지 확인 map 각 요소에 대해 주어진 콜백을 실행하고 새 배열 반환 filter 조건에 맞는 요소들로만 새 배열 생성 reduce 배열을 하나의 값으로 축약 const nodeList = document.querySelectorAll(".item"); // NodeList에서 push 사용 시 오류 발생 nodeList.push("New Item"); // 오류: nodeList.push is not a function // NodeList에서 map 사용 시 오류 발생 nodeList.map(item => item.textContent); // 오류: nodeList.map is not a function
- NodeList에서 사용할 수 없는 배열 메서드
- NodeList에서 사용할 수 있는 배열 메서드
forEach 각 요소에 대해 콜백 함수를 실행 item 특정 인덱스의 요소를 반환 -
const nodeList = document.querySelectorAll(".item"); // forEach 사용 nodeList.forEach(item => console.log(item.textContent)); // item 사용 console.log(nodeList.item(0)); // NodeList의 첫 번째 요소
- NodeList를 배열로 변환
- NodeList는 배열이 아니기 때문에, 배열 메서드를 사용하려면 NodeList를 배열로 변환해야 한다.
* Array.from()
const nodeList = document.querySelectorAll(".item");
const array = Array.from(nodeList);
array.push("New Item"); // 배열 메서드 사용 가능
console.log(array);
* 스프레드 연산자(...)
const nodeList = document.querySelectorAll(".item");
const array = [...nodeList];
array.map(item => console.log(item.textContent)); // 배열 메서드 사용 가능
2.DOM 노드를 포함:
- NodeList에는 HTML 요소뿐만 아니라 텍스트 노드나 주석 노드 같은 다른 노드도 포함될 수 있다.
3. 정적/동적 NodeList:
- querySelectorAll로 반환된 NodeList는 정적(Static) NodeList로, DOM이 변경되어도 자동으로 업데이트되지 않는다.
- 반면, getElementsByClassName 같은 메서드는 HTMLCollection을 반환하며, 동적(Dynamic)으로 DOM 변경을 반영한다.
<div class="item">Item 1</div>
<div class="item">Item 2</div>
<div class="item">Item 3</div>
<script>
const nodeList = document.querySelectorAll(".item");
console.log(nodeList); // NodeList(3) [div.item, div.item, div.item]
console.log(nodeList[0]); // 첫 번째 요소: <div class="item">Item 1</div>
</script>
2. forEach와 화살표 함수
forEach란?
forEach는 배열이나 NodeList 같은 반복 가능한 객체의 각 항목을 순회하면서, 주어진 함수를 실행하는 메서드.
화살표 함수( => )란?
화살표 함수는 JavaScript에서 간결하게 함수를 작성할 수 있는 문법.
다음 두 코드는 같은 의미다.
// 일반 함수
nodeList.forEach(function(el) {
console.log(el);
});
// 화살표 함수
nodeList.forEach(el => console.log(el));
el => console.log(el)은 아래와 같이 풀어쓸 수 있다.
function(el) {
console.log(el);
}
3. 화살표 함수가 forEach에서 쓰이는 이유
const nodeList = document.querySelectorAll(".item");
// 화살표 함수로 순회
nodeList.forEach(el => console.log(el.textContent));
// 위 코드는 아래와 같다
nodeList.forEach(function(el) {
console.log(el.textContent);
});
- el은 NodeList의 각 항목(노드)을 의미.
- => 뒤에 실행할 코드를 적어주면, 각각의 노드에서 동작을 수행할 수 있어.
- 결과적으로, NodeList에 포함된 모든 요소의 내용을 출력.
결론
- NodeList란?
- DOM 노드들의 리스트.
- 배열처럼 for 또는 forEach로 순회할 수 있음.
- 화살표 함수란?
- 간단하고 직관적으로 함수를 작성할 수 있는 문법.
- el => console.log(el)는 각 항목(el)에 대해 console.log(el)를 실행하는 함수와 같음.
- forEach와 화살표 함수의 조합:
- 간결하고 직관적인 코드 작성에 유용.
728x90
반응형