데이터와 참조 데이터 유형의 기본 유형 (원시 형)를 이해하는 방법

서론 값 / 문자열 /있는 실질적 부울 타입은 객체 / 어레이 / 기능 참조 형은

데이터 유형, 즉 6 ES5 :. 번호 / 문자열 오브젝트가 확장 객체 추가로 세분 될 수있다 / 부울 / 널 / 정의 / 목적 : 배열 / 기능 / 물체 등을들 수있다. 

대해서 typeof (1); // "숫자" 
대해서 typeof ( "1"); // "문자열" 
대해서 typeof ( 사실 ); // "부울" 
대해서 typeof ({}); // "개체" 
대해서 typeof (  ); // "개체" 
대해서 typeof (미정의); // "미등록" 

// 数组也是对象
대해서 typeof ([1,2,3]); // "개체" 

// 函数也是对象
VAR aFunc = 함수 () {};
대해서 typeof (aFunc); // "기능";
aFunc instanceof를 개체; // 사실

어느라고도 번호 / 문자열 / 부울 프리미티브 타입 : 원시 타입 및 객체 참조 형, 널 비트와 정의 특별한 그것을 일시적 여부이고;

 

참고 : 

1. 대해서 typeof은 "객체"에 대한 (NULL)하지만,하지만 : false로 널 (null) instanceof를 개체.

2. typoof (정의)为"미등록";

 

공정 : 상기 스택 메모리에 저장된 데이터의 유형에 기초

변수 이름을 기반으로 데이터 스택 메모리를 획득하는 과정을 다음의 경우처럼 스택 메모리 무엇입니까? 우리는 지금 간단하게 이해할 수 있으며, 해당 메모리 주소를 찾은 다음 데이터 메모리 주소를 가지고.

 

즉, 데이터가 메모리 나 메모리 주소를 스택 수없는 경우에만 사실 우리는 다음과 같은 코드로 기본 유형에 대해 얘기하는 특정 값이 될 수있다, 우리는 선언이 시간에 메모리에있는 변수의 :. 이름, 전화 메모리 주소가 이름 바인딩으로 동일합니다, 우리는 문자열에 값 지정 : "hanmeimei를"다음 메모리는 문자열 데이터 생성됩니다. "hanmeimei", 메모리 주소이 데이터를 " 과제의 결합 "변수 이름 이름.이 실현.

우리는이 값을 수정할 때 "lilei는"이 수정 된 메모리 주소 이름으로, 다음 더 이상 포인트 "hanmeimei"메모리 주소가 위치한됩니다 이름을 가리키는 사실이다.

// 변수에 값이 없기 때문에, 변수를 선언, 따라서 정의를 가리; 
var에 이름을; 

// 할당, 이름에 바인드 새로 만든 "hanmeimei"데이터 정의에 이름을 더 이상 포인트의 메모리 주소, 
이름 = "hanmeimei" ; 

// "lilei"데이터 메모리가 새로 생성에 이름이 가리키는 메모리 주소는 더 이상을 "hanmeimei"여기서 메모리 주소를 의미없는 
이름 = "lilei"을;

위의 과정은 다음과 같은 과정을 통해 간 :  

 

 

 

참고 : 

1. 모든 일에 자바 스크립트도 객체, 기본 유형이지만, 그들은 각각의 래퍼 객체에 반영 객체 특성.

2. 전술 한 공정의 실제 효과는 데모 여기도보다 복잡하다;

3. 데이터가 어떤 변수 지적되지 않은 경우,이 데이터가 파괴 될 가비지 컬렉션은 메모리가 해제 될 것이다;

 

단계 2 : 힙 메모리에 저장된 데이터의 참조 형식

힙 메모리 : 힙 메모리는 메모리의 스택 변수 달리 => 메모리 어드레스 => 힙 메모리, 데이터 메모리 어드레스에 저장이 참조 데이터, 즉, 다른 데이터 구성의 메모리이다 메모리 주소의 데이터가 여전히 메모리 주소 경우, 다음되는 다음과 같은 가장 간단한 힙 메모리의 배열에 이러한 데이터를 내려다보고 계속 지적 찾기 위해 데이터를 가지고 계속합니다 : 

var family, son;

son = "liqiang";

family = ["lilei", "hanmeimei", son];

对应的演示图如下: 

 

 

 

注意: 

1. 基本类型无法被修改, 只能被覆盖, 原因是基本类型指向的内存地址里面的数据无法被修改, 只能新建一个数据, 把变量名指向这个内存地址;

2. 原始类型可以被修改, 指的是它指向的内存地址里面的内存地址可以被修改, 比如上面的000009地址里面的数据, 完全可以再加其他的. 不过加的也只能是内存地址;

3. 类似String.prototype.replce()一类的类型原始的方法, 产生的数据都是在一个新的内存地址上, 因为它无法做到改变自身.

 

추천

출처www.cnblogs.com/aisowe/p/11586433.html