JavaScript에는 다양한 데이터 유형이 있습니다.
기본 유형: 문자열, 숫자, 부울, 정의되지 않음, null, 기호 및 bigint.
참조 유형: 객체, 함수, 배열
기본 유형은 JavaScript에서 가장 기본적인 데이터 유형입니다. 그것들은 불변입니다. 이는 기본 값이 생성되면 변경할 수 없음을 의미합니다. 이것을 변수 재할당과 혼동하지 마십시오. 변수를 재할당하는 것은 기본 유형의 값을 변경하는 것과 다릅니다.
let str = "hello"; str = "Hello"; // str -> "Hello"
이 예에서는 str 변수를 새 값에 재할당합니다. 이거 완전 괜찮습니다.
let str1 = "hello"; let str2 = "hello";
여기에는 동일한 값을 갖는 두 개의 변수 str1과 str2가 있습니다. JavaScript에서는 두 개의 기본 값이 동일하면 동일합니다. 내부적으로는 두 변수가 모두 동일한 메모리 위치를 가리키기 때문에 동일합니다.
동일한 문자열은 메모리에 다시 생성되지 않습니다. 메모리에 한 번만 저장됩니다. JavaScript 엔지니어는 문자열 인터닝이라는 기술을 사용하여 메모리 사용을 최적화합니다. 이 기술은 숫자에도 사용됩니다.
let str = "hello"; str[0] = "H"; // str -> "hello"
한 번 생성된 문자열은 변경할 수 없습니다. 이 예에서는 문자열 str의 첫 번째 문자를 "H"로 변경하려고 합니다. 이것은 작동하지 않습니다. 문자열 str은 동일하게 유지됩니다. 기본 유형은 변경할 수 없습니다.
새 문자열을 생성해야 하는 경우 명시적으로 생성할 수 있습니다.
let newStr = "H" + str.slice(1); // newStr -> "Hello"
참조 유형은 변경 가능합니다. 이는 참조 유형의 값을 변경할 수 있음을 의미합니다. 메모리에 참조로 저장된다는 점을 강조하기 위해 참조 유형이라고 합니다. 문자열도 참조로 저장되지만 불변이며 인턴 기술을 사용하여 메모리에서 동일한 값이 다시 생성되는 것을 방지합니다.
let obj1 = { name: "John" }; let obj2 = { name: "John" };
여기서 obj1과 obj2는 서로 다른 두 개체입니다. 그들은 다른 메모리 위치에 저장됩니다. 속성과 값이 동일하더라도 객체는 값이 아닌 참조로 비교되기 때문에 동일하지 않습니다.
let obj1 = { name: "John" }; let obj2 = obj1;
여기서 obj1과 obj2는 동일한 객체입니다. 두 변수 모두 동일한 메모리 위치를 가리킵니다. 이 위치에서 값을 변경하면 두 변수 모두에 반영됩니다.
obj2.name = "Jane"; // obj1 -> { name: "Jane" }, obj2 -> { name: "Jane" }
이것이 메모리에 어떻게 표시되는지 시각화하려면:
Memory location 1: { name: "John" } obj1 -> Memory location 1 obj2 -> Memory location 1
업데이트 내용:
let str = "hello"; str = "Hello"; // str -> "Hello"
메모리 위치 1의 값을 업데이트했습니다. obj1과 obj2 모두 동일한 메모리 위치를 참조하므로 이 변경 사항이 반영되는 것은 당연합니다.
기본 유형은 불변이며 문자열 인터닝과 같은 기술을 통해 메모리 사용에 최적화되어 있는 반면, 참조 유형은 가변성과 공유 참조를 통해 더 큰 유연성을 허용합니다. 이러한 개념을 익히면 코드 동작을 더 잘 예측하고 제어할 수 있어 더욱 강력하고 유지 관리가 쉬운 애플리케이션을 만들 수 있습니다.
위 내용은 JavaScript의 다양한 데이터 유형.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!