TIL_210312
오늘 배운 것
- 유사 배열
유사 배열
let arr = [1, 2, 3]; // array [1, 2, 3]
let nodes = document.querySelectorAll('div'); // NodeList [div, div, div, div, ...]
let els = document.body.children; // HTMLCollection [noscript, link, div, script, ...]
let arr = [1, 2, 3]; // array [1, 2, 3]
let nodes = document.querySelectorAll('div'); // NodeList [div, div, div, div, ...]
let els = document.body.children; // HTMLCollection [noscript, link, div, script, ...]
위와 같은 상태라면 겉만 봐서는 차이를 알 수가 없다. 둘다 배열처럼 생겨먹었기 때문
하지만 Array.isArray
를 이용하여 확인하면 검증이 가능하다
Array.isArray(arr); //true
Array.isArray(nodes); //false
Array.isArray(els); //false
arr
은 배열이고 nodes
와 els
는 유사 배열이기 때문에 다른 결과가 나온다.
직접 배열 리터럴로 선언한 것만 찐 배열이고, 그렇지 않은 것들은 깍두기 상태의 유사 배열이다.
또 하나 예를 들면
let test = {
0: 'a',
1: 'b',
2: 'c',
length: 3
}
이런 것도 유사 배열로 취급된다. 배열도 객체라는 성질을 이용한 트릭이다.
유사 배열의 경우에는 배열의 메소드를 사용할 수 없기 때문에 배열과 유사 배열을 구분하여 사용하여야 한다.
유사 배열에서도 배열의 메소드를 쓰는 방법이 있긴 한데 이건 좀 나중에 공부하기로 하자.
Author And Source
이 문제에 관하여(TIL_210312), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@ccrjun/TIL210312저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)