투케이2K

378. (javaScript) [에러 정리] 자바스크립트 RangeError: invalid array length 에러 정리 본문

JavaScript

378. (javaScript) [에러 정리] 자바스크립트 RangeError: invalid array length 에러 정리

투케이2K 2025. 3. 18. 20:00

[개발 환경 설정]

개발 툴 : Edit++

개발 언어 : JavaScript

 

[설명 정리]

-----------------------------------------------------------------------------------------
[사전 설명 및 설정 사항]
-----------------------------------------------------------------------------------------

- 개발 환경 : Web

- 개발 기술 : JavaScript (자바스크립트) / Exception / RangeError

-----------------------------------------------------------------------------------------





-----------------------------------------------------------------------------------------
[설명 정리]
-----------------------------------------------------------------------------------------

1. RangeError 는 2^32와 같거나 이보다 긴, 혹은 음수의 길이를 가진 Array 나 ArrayBuffer 를 생성했을 때 발생하는 에러입니다


2. Array 와 ArrayBuffer 의 길이에 제한을 둔 이유는, Array 나 ArrayBuffer 의 length 속성은 사인되지 않은(unsigned) 32 비트 정수로 반영됩니다

  >> 즉 Array 나 ArrayBuffer 는 오직 0 ~ 2^32-1 사이의 값만을 저장할 수 있습니다


3. RangeError: invalid array length 발생 예시 코드 : 

    new Array(Math.pow(2, 40)); // 2^32 이상
    new Array(-1); // 음수
    new ArrayBuffer(Math.pow(2, 32)); // 2^32 이상
    new ArrayBuffer(-1); // 음수

    let a = [];
    a.length = a.length - 1; // 음수

    let b = new Array(Math.pow(2, 32) - 1);
    b.length = b.length + 1; // 2^32 이상


4. RangeError 없이 올바르게 배열을 관리 하려면 Array 및 ArrayBuffer 생성 시 0 ~ 2^32-1 사이즈 만큼 크기 지정 후 

   데이터 저장 시 해당 크기를 초과하는 경우 추가 배열 생성 및 사이즈 초과 에러 팝업창 표시 방어 로직이 필요합니다

-----------------------------------------------------------------------------------------





-----------------------------------------------------------------------------------------
[참고 사이트]
-----------------------------------------------------------------------------------------

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Errors/Invalid_array_length

-----------------------------------------------------------------------------------------
 
반응형
Comments