[TIL/모던 자바스크립트 Deep Dive] 2023/07/20
length 프로퍼티는 배열의 길이(=요소의 개수)를 나타내는, 0 이상의 정수를 값으로 갖는다. length 프로퍼티의 값은 빈 배열일 경우 0이고, 빈 배열이 아닐 경우 가장 큰 인덱스에 1을 더한 것과 같다.length 프로퍼티의 값은 배열에 요소를 추가하거나 삭
27장. 배열 🟢
27-3. length 프로퍼티와 희소 배열 🟡
length 프로퍼티는 배열의 길이(=요소의 개수)를 나타내는, 0 이상의 정수를 값으로 갖는다. length 프로퍼티의 값은 빈 배열일 경우 0이고, 빈 배열이 아닐 경우 가장 큰 인덱스에 1을 더한 것과 같다.

length 프로퍼티의 값은 배열에 요소를 추가하거나 삭제하면 자동 갱신된다.

length 프로퍼티 값은 배열의 길이(=요소의 개수)를 바탕으로 결정되지만, 임의의 숫자 값을 명시적으로 할당할 수도 있다. 현재 length 프로퍼티 값보다 작은 숫자 값을 할당하면 배열의 길이가 줄어든다.

length 프로퍼티 값보다 큰 숫자 값을 할당하는 경우를 주의해야 하는데, length 프로퍼티 값은 변경되지만 실제로 배열의 길이가 늘어나지는 않는다.

현재 length 프로퍼티 값보다 큰 숫자 값을 length 프로퍼티에 할당하는 경우 length 프로퍼티 값은 성공적으로 변경되지만, 실제 배열에는 아무런 변함이 없다. 값 없이 비어 있는 요소를 위해 메모리 공간을 확보하지 않으며 빈 요소를 생성하지도 않는다.

위와 같이 배열의 요소가 연속적으로 위치하지 않고 일부가 비어 있는 배열을 희소 배열이라 한다. 자바스크립트는 희소 배열을 문법적으로 허용한다.

희소 배열의 length는 희소 배열의 실제 요소 개수보다 언제나 크다. 실제 요소 개수와 다르다는 점은 곧 예측 가능성의 하락으로 이어지기에 사용을 지양하는 것이 좋겠다. 배열에는 같은 타입의 요소를 연속적으로 위치시키는 것이 최선이라는 점을 인지하도록 하자.
27-4. 배열 생성 🟡
배열 리터럴 🟣
배열 리터럴은 0개 이상의 요소를 쉼표로 구분하여 대괄호로 묶는다. 객체 리터럴과 달리 프로퍼티 키가 없고 값만 존재한다는 것이 특징이다.

배열 리터럴에 요소를 하나도 추가하지 않으면 length 프로퍼티 값이 0인 빈 배열이 된다.

배열 리터럴에 요소를 생략하면 희소 배열이 생성된다.

Array 생성자 함수 🟣
Array 생성자 함수를 통해 배열을 생성할 수도 있다. Array 생성자 함수는 전달된 인수의 개수에 따라 다르게 동작하므로 주의가 필요하다.
- 전달된 인수가 1개이고 숫자인 경우, length 프로퍼티 값이 인수인 배열을 생성한다.

- 이때 생성된 배열은 희소 배열이다. length 프로퍼티 값은 0이 아니지만 실제로 배열의 요소는 존재하지 않는다.

- 배열의 요소를 최대 (2의 32승 - 1)개 가질 수 있다. 그 이상의 숫자가 인수로 전달되면 RangeError가 발생한다.

아 ㅋㅋ 갑자기 알쓸신잡,,, 0부터 4294967295까지 허용되기에, 전달된 인수가 음수이면 에러가 발생한다.

- 전달된 인수가 없는 경우 빈 배열을 생성한다. 배열 리터럴 []과 동일하다.

- 전달된 인수가 2개 이상이거나 숫자가 아닌 경우, 해당 인수를 요소로 갖는 배열을 생성한다.


Array.of 🟣
Array 생성자 함수와 대부분 동일하다. 다만 Array.of는 전달된 인수가 1개이고 숫자이더라도, 해당 인수를 요소로 갖는 배열을 생성한다. ES6에서 도입되었다.

Array.from 🟣
ES6에서 도입된 Array.from 메서드는, '유사 배열 객체' 또는 '이터러블 객체'를 인수로 전달받아 배열로 변환하여 반환한다.

Array.from을 사용하면 두 번째 인수로 전달한 콜백 함수를 통해 값을 만들면서 요소를 채울 수 있다.

- 유사 배열 객체

이터러블 객체는 뭔 말인지 모르겠으니 34장에서 다루도록 한다.
More to read
Amazon VPC Architecture 이해하기
새로운 프로젝트를 기획하며, 개발에서 무엇을 가장 먼저 고민해야 하는지 다시 돌아보게 되었습니다.한때는 프론트엔드가 모든 설계의 출발점이라고 믿었습니다. 유저가 무엇을 보고, 어떤 흐름에서 머무르고 이탈하는지에 대한 이해 없이 서비스를 만든다는 건 불가능하다고 생각했기
'원사이트'프론트엔드 관점으로 알고리즘 이해하기
오랜만에 방법론에 관한 글을 쓰게 되었습니다. 최근 상황은 이렇습니다. SSAFY에서는 하루에 엄청난 양의 알고리즘 문제들을 과제로 수행하게 됩니다. 그 과정에서, '구현력'이 매우 떨어진다는 생각이 들었습니다. 완전히 어려운 문제라면 '아쉬움'이라는 감정조차 느끼지
SubnetVPC 설계의 시작: IP와 Subnet
반복되는 루틴 속에서 얻은 안정감을 발판 삼아, 이제는 기술적 스펙트럼을 넓히기 위한 개인 프로젝트에 착수하고자 합니다.이번 프로젝트의 목표는 단순한 포트폴리오 구축을 넘어, 실제 서비스 수준의 블로그 시스템 구현과 다국어 처리 적용 등 실무에 가까운 역량을 한 단계