[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
프론트엔드와 백엔드 사이
HTTP 상태 코드는 프론트엔드에서 백엔드로 보냈던 요청의 수행 결과를 의미하는 일종의 약속이며, API를 구성하는 핵심 요소 중 하나입니다. 상태 코드와 관련하여, 백엔드는 잘 모르는 프론트엔드의 슬픈 사정이 있습니다.아래는 요청이 실패했음에도, 백엔드에서 상태 코드
JWT토큰 관리 방식 톺아보기
0. 들어가며 🎯 서비스에 접근하려는 사용자가 누구인지 확인하는 과정을 사용자 인증이라고 합니다. 인증된 사용자에게 주어진 권한을 확인하는 작업은 인가라고 부릅니다. 이번 글에서는 인가는 다루지 않습니다. 사용자 인증에는 많은 방식이 있지만, 오늘은 세션 인증 방
A2AA2A / MCP 멀티 에이전트 오케스트레이션
0. 들어가며 ✍️ Google for Developers에, 레스토랑 공급망 시나리오로 엮은 6대 프로토콜(MCP, A2A, UCP, AP2, A2UI, AG-UI)에 대한 가이드가 게시된 이후, MCP와 A2A부터 구현해 보는 것이 좋을 것 같다는 생각이 들었습니