JavaScript 기본 심법 데이터 형식

4699 단어 js 데이터 형식
자신 이 야생 프로그래머 이기 때문에 프로그램 설 계 를 처음 배 울 때 메모리 라 는 기초 지식 에 신경 을 쓰 지 않 았 기 때문에 나중에'창고 에 존재 하 는 것 이 무엇 인지,창고 에 인용 만 저장 되 어 있다'는 말 을 꺼 낼 때 항상 멍 하 다.
나중에 메모리 의 지식 을 점점 알 게 되 었 는데,이 부분 은 여전히 매우 이해 할 필요 가 있다.
기본 데이터 구조
창고.
스 택 은 한 단락 에 만 삽입 하거나 삭제 할 수 있 는 선형 표 로 선진 적 인 데이터 구조 입 니 다.
쌓다
더 미 는 해시 알고리즘 을 기반 으로 한 데이터 구조 입 니 다.
대열
대기 열 은 선진 적 인 선 출(FIFO)데이터 구조 이다.
JavaScript 의 데이터 형식 저장
자 바스 크 립 트 는 데이터 형식 을 기본 데이터 형식 과 인용 데이터 형식 으로 나 누 는데 그 중 하 나 는 저장 위치 가 다르다 는 것 이다.
기본 데이터 형식
자 바스 크 립 트 의 기본 데이터 형식 은 다음 과 같 습 니 다.
  • String
  • Number
  • Boolean
  • Undefined
  • Null
  • Symbol(잠시 상관 하지 않 음)기본 데이터 형식 은 스 택 메모리 에 저 장 된 간단 한 데이터 세그먼트 입 니 다.
    참조 데이터 형식
    JavaScript 의 참조 데이터 형식 은 다음 과 같 습 니 다.
  • Array
  • Object
  • 인용 데이터 형식 은 메모리 에 저 장 된 다음 스 택 메모리 에 실제 대상 에 대한 인용 을 저장 합 니 다.따라서 자 바스 크 립 트 에서 인용 데이터 형식 에 대한 조작 은 모두 조작 대상 의 인용 이지 실제 대상 이 아니다.
    스 택 메모리 에 주 소 를 저장 한 것 으로 이해 할 수 있 습 니 다.이 주 소 는 메모리 의 실제 값 과 관련 이 있 습 니 다.
    도해
    지금,우 리 는 몇 개의 변 수 를 설명해 봅 시다.
    
    var name="axuebin";
    var age=25;
    var job;
    var arr=[1,2,3];
    var obj={age:25};
    다음 그림 을 통 해 데이터 형식 이 메모리 에 저 장 된 상황 을 표시 할 수 있 습 니 다.

    이 때name,age,job세 가지 기본 데이터 형식 은 스 택 메모리 에 직접 존재 하 는 것 이 고,arr,obj 는 스 택 메모리 에 하나의 주소 만 저장 하여 메모리 에 대한 인용 을 표시 합 니 다.
    복제 하 다.
    기본 데이터 형식
    기본 데이터 형식 에 대해 복 사 를 하면 시스템 은 자동 으로 새로운 변 수 를 스 택 메모리 에 새 값 을 할당 하여 쉽게 이해 할 수 있 습 니 다.
    참조 데이터 형식
    배열,대상 과 같은 인용 데이터 형식 에 있어 서 복사 할 때 차이 가 있 습 니 다.
    시스템 도 자동 으로 새로운 변 수 를 스 택 메모리 에 값 을 할당 하지만 이 값 은 하나의 주소 에 불과 합 니 다.복 사 된 변 수 는 기 존 변수 와 같은 주소 값 을 가지 고 메모리 의 같은 대상 을 가리 키 는 것 이다.

    만약 에 보 여 준다 면 var obj Copy=obj 를 실행 한 후에 obj 와 obj Copy 는 같은 주소 값 을 가지 고 메모리 의 같은 실제 대상 을 실행 합 니 다.
    이게 뭐 가 달라 요?
    내 가 obj 나 obj Copy 를 수정 할 때 다른 변수의 변 화 를 일 으 킬 것 이다.
    왜?
    왜 기본 데이터 형식 은 스 택 에 존재 하고 인용 데이터 형식 은 쌓 여 있 습 니까?
  • 더 미 는 창고 보다 크 고 창고 가 맞 추 는 속도 가 빠르다
  • 4.567917.기초 데이터 형식 이 비교적 안정 적 이 고 상대 적 으로 사용 하 는 메모리 가 적다4.567917.인용 데이터 형식 크기 는 동태 적 이 고 무한 하 다4.567917.메모 리 는 무질서 하 게 저장 되 어 있 으 며 인용 에 따라 직접 가 져 올 수 있 습 니 다참고 문장
    js 메모리 할당 이해
    원시 값 과 인용 값
    ECMAScript 에서 변 수 는 두 가지 유형의 값,즉 원시 값 과 인용 값 을 저장 할 수 있 습 니 다.
    원본 값 은 원본 데이터 형식(기본 데이터 형식)을 나타 내 는 값,즉 Undefined,Null,Number,String,Boolean 형식 이 나타 내 는 값 을 말 합 니 다.
    인용 값 이란 복합 데이터 형식의 값,즉 Object,Function,Array,사용자 정의 대상 등 을 말한다.
    창고 와 더미
    원시 값 과 인용 값 에 대응 하 는 두 가지 구조의 메모리 즉 창고 와 더미
    스 택 은 후진 에서 먼저 나 온 데이터 구조 로 자바 script 에서 Array 를 통 해 스 택 의 행 위 를 모 의 할 수 있 습 니 다.
    원본 값 은 창고 에 저 장 된 간단 한 데이터 입 니 다.즉,그들의 값 은 변수 가 접근 하 는 위치 에 직접 저 장 됩 니 다.
    더 미 는 해시 알고리즘 을 기반 으로 한 데이터 구조 로 자바 script 에서 인용 값 은 더 미 를 저장 합 니 다.
    인용 값 은 더미 에 저 장 된 대상 이다.즉,변수 에 저 장 된 값(즉 대상 을 가리 키 는 변수,창고 에 저 장 된 변수)은 포인터 로 더미 에 저 장 된 실제 대상 을 가리킨다.
    예:var obj=new Object();obj 는 스 택 에 저 장 됩 니 다.new Object()대상 을 가리 키 고 new Object()는 더미 에 저 장 됩 니 다.
    그런데 왜 인용 값 은 더미 에 넣 어야 합 니까?원본 값 은 창고 에 넣 어야 합 니 다.모두 메모리 에 있 지 않 습 니까?왜 같이 두 지 않 습 니까?이제 문제 의 답 을 찾 아 보 자!
    우선 코드 를 살 펴 보 겠 습 니 다.
    
    function Person(id,name,age){
    this.id = id;
    this.name = name;
    this.age = age;
    }
    var num = 10;
    var bol = true;
    var str = "abc";
    var obj = new Object();
    var arr = ['a','b','c'];
    var person = new Person(100,"      ",25);
    그리고 메모리 분석 도 를 살 펴 보 자.

    변수 num,bol,str 는 기본 데이터 형식 입 니 다.그들의 값 은 스 택 에 직접 저장 되 어 있 습 니 다.obj,person,arr 는 복합 데이터 형식 입 니 다.그들의 인용 변 수 는 스 택 에 저장 되 어 있 고 쌓 여 있 는 실제 대상 을 가리 키 고 있 습 니 다.
    위의 그림 에서 알 수 있 듯 이 우 리 는 쌓 여 있 는 데 이 터 를 직접 조작 할 수 없다.즉,우 리 는 대상 을 직접 조종 할 수 없 지만 스 택 에서 대상 에 대한 인용 을 통 해 대상 을 조작 할 수 있다.마치 우리 가 리모컨 을 통 해 텔레비전 을 조작 하 는 것 처럼 이 텔레비전 자체 에 제어 버튼 이 없다 는 것 과 차이 가 있다.
    지금 우 리 는 왜 인용 값 을 더미 에 넣 어야 하 는 지,원시 값 을 창고 에 넣 어야 하 는 지 에 대한 질문 에 대답 합 니 다.
    한 마디 만 기억 해라.에 너 지 는 균형 을 지 키 는 것 이다.시간 이 공간 을 바 꾸 고 공간 이 시간 을 바 꾸 는 문제 일 뿐이다.
    스 택 보다 크 고 스 택 은 쌓 아 올 리 는 연산 속도 가 빠 르 며 대상 은 복잡 한 구조 이 며 자 유 롭 게 확장 할 수 있 습 니 다.예 를 들 어 배열 은 무한 확장 이 가능 하고 대상 은 자 유 롭 게 속성 을 추가 할 수 있 습 니 다.그들 을 더미 속 에 두 는 것 은 창고 의 효율 에 영향 을 주지 않 기 위해 서 이다.인용 을 통 해 더미 속 의 실제 대상 을 찾 아 조작 하 는 것 이다.간단 한 데이터 형식 에 비해 간단 한 데이터 형식 은 비교적 안정 적 이 고 작은 메모리 만 차지한다.간단 한 데이터 형식 을 쌓 지 않 는 것 은 인용 을 통 해 쌓 인 실제 대상 을 찾 는 데 시간 이 걸 리 기 때 문 입 니 다.이 종합 원 가 는 창고 에서 실제 값 을 직접 얻 는 원가 보다 훨씬 큽 니 다.그래서 간단 한 데이터 형식의 값 은 스 택 에 직접 저 장 됩 니 다.

    좋은 웹페이지 즐겨찾기