집 >웹 프론트엔드 >JS 튜토리얼 >레코드 및 튜플 : JavaScript '의 새로운 불변 데이터 유형
레코드 및 튜플 : JavaScript '의 새로운 불변 데이터 유형
Christopher Nolan원래의
2025-02-12 08:25:09273검색
JavaScript 레코드 및 튜플 : 불변의 데이터 구조의 미래
JavaScript는 기록과 튜플의 두 가지 새로운 불변 데이터 유형을 안내하려고합니다. 그들은 현재 TC39 표준 승인 프로세스의 2 단계에 있으며 여전히 개선되고 있으며 브라우저 나 런타임 환경에서는 사용할 수 없지만 내년 내에 구현 버전을 사용할 수있을 것으로 예상됩니다. 그들은 배열과 객체를 사용할 때 개발자가 직면 한 어려운 문제를 해결하도록 설계되었습니다.
키 포인트
레코드와 튜플은 JavaScript로 개발중인 새로운 불변의 데이터 유형이며 내년 내에 제공 될 것으로 예상됩니다. 그들은 기능이 의도적으로 또는 의도하지 않은 값을 배열이나 객체에 저장하지 않도록하는 등 개발자가 직면 한 문제를 해결하도록 설계되었습니다.
튜플은 깊이가 불변의 배열과 같은 데이터 구조입니다. 미지급 값을 가질 수 없으며 기본 유형, 다른 튜플 또는 레코드 만 설정할 수 있습니다. 튜플은 원시 유형이므로 다른 튜플과 깊이를 값으로 비교할 수 있습니다.
레코드는 불변의 깊이가있는 객체와 유사한 데이터 구조입니다. 문자열 속성 이름을 사용해야하며 원시 유형, 다른 튜플 또는 레코드로만 값을 설정할 수 있습니다. 레코드는 다른 레코드와 심층적으로 비교할 수 있으며 속성 순서는 관련이 없습니다.
const
의 한계
경험이 풍부한 JavaScript 개발자는 변수를 선언하기 위해
를 사용하는 것이 가장 모범임을 알고 있습니다. 변수를 불변으로 만듭니다. 값을 변경할 수 없으므로 더 적은 문제를 처리해야합니다.
불행히도,
는 기본 값을 불변으로 만 만들 수 있습니다 (문자열, 숫자, bigint, 부울, 기호 및 정의되지 않은). 배열이나 객체를 재 할당 할 수는 없지만 포함 된 값과 속성은
를 수정할 수 있습니다. 예를 들면 :
객체에 대해서도 마찬가지입니다
메소드는 도움이 될 수 있지만 물체의 직접적인 자식 속성에 얕은 동결 만 적용됩니다.
const 따라서 함수가 배열이나 객체에 저장된 값을 의도적으로 또는 의도하지 않은 상태로 변경하지 않도록하기가 어렵습니다. 개발자는 물건을 내버려 두거나 복제 된 버전의 변수를 통과합니다 (이것은 또한 고유 한 과제가 있습니다).
불일치 비교
개발자가 겉보기에 합리적인 객체 나 배열 비교를 만들려고 할 때 더 많은 혼란이 발생할 수 있습니다.
기본 유형 만 값으로 비교할 수 있습니다. 객체와 배열은 기준 const에 의해 전달되고 비교됩니다. 두 변수가 메모리에서 동일한 항목을 가리키는 경우에만 똑같이 : 두 객체 또는 배열의 깊은 비교에는 각 값을 차례로 평가하기 위해 재귀 비교 기능이 필요합니다. 그럼에도 불구하고 다른 방식으로 저장 될 수있는 날짜 나 기능과 같은 유형에 문제가있을 수 있습니다.
튜플 : 불변 배열과 같은 데이터 구조
튜플은 깊이가 불변의 배열과 같은 데이터 구조입니다. 그것들은 실제로 복합 원시 유형이며, 정상 어레이 구문 전에
수정 자로 식별됩니다.
또는 새로운
메소드는 배열에서 튜플을 생성 할 수 있습니다.
# 표준 어레이와 달리 튜플은 다음 요구 사항을 충족해야합니다.