기본 데이터 유형:변수에 저장된 실제 값을 조작할 수 있는 값 접근(value access)입니다. 기본 타입 값은 단순한 데이터 세그먼트를 의미합니다.
기본 데이터 유형은 다섯 가지입니다:Undefined, Null, String, Number, Boolean.
인용 유형:객체의 변수를 복사할 때는 조작 대상이 객체의 참조이지만, 객체에 속성을 추가할 때는 실제 객체가 조작됩니다. 참조 타입 값은 여러 값으로 구성될 수 있는 객체입니다.
인용에는 여러 가지 유형이 있습니다:객체, 배열, RegExp, Date, 함수, 특수 기본 래퍼 유형(String, Number, Boolean), 그리고 단일 내장 객체(Global, Math)가 포함됩니다.
기본 타입 값과 참조 타입 값의 차이에 대해:
(1)참조 타입 값은 속성과 메서드를 추가하지만, 기본 타입 값은 그렇지 않습니다。
(2)변수 값을 복사할 때, 기본 타입은 변수 객체에 새 값을 생성하여 새 변수로 복사합니다. 그 이후로,두 변수의 어떤 작용도 다른 변수에 영향을 주지 않는다; 참조 타입은 변수 객체에 저장된 값의 복사본을 새 변수로 복사하는 것이지만, 두 변수의 값은 힙에 저장된 객체를 가리키며, 즉 실제로 동일한 객체를 참조합니다.한 변수를 바꾸면 다른 변수에 영향을 미칩니다。
배열을 예로 들어 타입 값을 참조하는 방법:
매개변수 패스: 값으로 전달하며, 함수 외부의 값을 함수 내부의 매개변수(국소 변수)로 복사합니다. 로컬 변수를 조작하면 지역 변수의 변화가 함수 외부에 반영되지만, 함수 외부의 값에는 영향을 주지 않습니다.
물론, 객체를 사용할 때 이해하기 어려울 수 있습니다:
분명히 매개변수는 값으로 전달되는데, 생성된 p 인스턴스에 setName()에 이름 속성도 추가될 수 있는 이유는 무엇인가요?
obj와 p가 동일한 객체를 참조하기 때문에, obj는 값으로 전달되더라도 참조를 통해 동일한 객체에 접근합니다. 아래 예시를 참고해 명확히 이해할 수 있습니다.
함수 내에서 obj 객체를 다시 작성하세요. 이 시점에서 obj 객체는 로컬 객체를 참조하고 있고, 외부 p가 여전히 원래 참조이므로 변경되지 않습니다.
분석의 종류:
typeof:确定变量是字符串、数值、布尔值还是undefined的最佳工具。
인스턴스오브: 객체 타입인지 판단합니다.
|