JavaScript의 데이터 변수에 대한 메모리 분석

小云云
풀어 주다: 2018-03-17 15:41:24
원래의
1617명이 탐색했습니다.

1.데이터란 무엇인가요? *데이터는 특정 정보를 나타내는 메모리에 저장되는 '물건'입니다. 그 본질은 0101 바이너리입니다. 이 글은 모두에게 도움이 되기를 바라며 주로 JavaScript의 데이터 변수에 대한 메모리 분석을 공유합니다.

eg:18 //이 18은 단지 나이나 점수 등일 수 있습니다.

글쓰기 프로그램의 데이터에는 특별한 의미가 있어야 합니다.

*데이터는 읽기 가능하고 전송 가능하다는 기본 특성을 가지고 있습니다(전송 가능성이 매우 중요합니다)

        var a=2;
        b=a;//这个是传递a变量的数据的变量 

        a={2,4,5}
        b=a;//这个传递的是a对象的地址值
로그인 후 복사

*모든 것(모든 것)은 데이터이고 기능도 데이터입니다

"모든 것이 객체입니다"라는 문장은 모순됩니다. 기본 유형과 객체로 구분할 수 있습니다.

*프로그램 내 모든 연산의 대상: 데이터

모든 연산은 데이터의 추가, 삭제, 수정, 조회입니다. 작업에는 데이터에 대한 산술 연산 수행, 매개변수 전달을 위한 함수 호출, 값 할당 등이 포함됩니다.

2.

*메모리스틱(회로기판) 전원을 켠 후 생성되는 저장공간(임시)

변수를 선언하면 자동으로 메모리가 할당됩니다
해제된 메모리는 재사용이 가능합니다. 전역 변수를 해제해야 합니다(즉, 이 변수에 값을 다시 할당해야 함))

*생성 및 사망: 메모리 스틱(집적 회로 기판)==》전원 켜기==》생성 특정 용량의 저장 공간==》저장 각 종류의 데이터 ==》정전==》모든 메모리가 사라집니다

*메모리의 공간은 일시적인 반면, 하드 디스크의 공간은 영구적입니다

*조각 메모리에는 2개의 데이터가 포함됩니다

-->메모리에 저장된 데이터(일반적으로 데이터/주소 데이터)

--> 메모리 주소 값 데이터


* 메모리 분류

-> ): 전역변수, 지역변수

-> 힙(더 큰 공간): 객체


3. 변수란 무엇인가요?

*값이 변할 수 있는 양, 변수명과 변수값으로 구성됨

*변수는 작은 메모리에 해당하고, 변수명(식별)은 메모리를 찾는데 사용되며, 변수값은 메모리에 저장된 내용

var a= 3;

4. 메모리와 데이터, 변수는 어떤 관계인가요?

*메모리는 데이터를 저장하는 데 사용되는 컨테이너입니다.

*변수(변수 이름)는 메모리의 식별자입니다. 변수를 통해 해당 메모리를 찾아 메모리에 있는 데이터를 연산(읽기/쓰기)합니다

5. 할당 및 메모리 관련 문제

질문: var a=XXX, a의 메모리에는 정확히 무엇이 저장되어 있나요?

        //了解内存只保存俩种值(基本类型值,对象地址值)
        var a=2;//a内存是基本类型的值:3
        a={}//a内存是{}的地址值

        var b=4;
        a=b;//a中保存的是:b保存的基本类型的值4

        b=[];
        a=b;//a中保存的是:b中的地址值
로그인 후 복사


6. 참조 변수 할당 문제 관련

(1). 두 개의 참조 변수가 동일한 객체를 가리키며, 하나의 참조 변수를 통해 내부 데이터가 수정되고, 다른 참조 변수도 표시됩니다

*2个引用变量指向同一个对象,通过一个引用变量修改内部数据,另一个引用变量也看得见
        var a1={n:3};
        var a2=a1;
        a1.n=4;
        console.log(a2.n)//4

        function fn (a) {
            a.n=8;//这是改变对象内部的数据,并没有改变对象
        }
        fn(a1);
        console.log(a1.n,a2.n)//8  8//注意:当fn执行完时,a也就释放内存
로그인 후 복사


(2) 두 개의 참조 변수는 동일한 개체를 가리키고, 하나의 참조 변수는 다른 개체를 가리키고 다른 참조 변수는 여전히 원래 개체를 가리킵니다.


7. js에서 함수를 호출할 때 언제 값으로 전달되나요, 아니면 참조로 전달되나요? *참조가 아닌 값으로만 ​​전달되면 모든 값이 전달됩니다. 그냥 이 값이 기본 데이터일 수도 있고, 참조(주소) 데이터(객체, 함수, 배열)일 수도 있습니다

*후자가 참조 전송으로 간주되면 전송과 참조 전송이 모두 가능합니다

        var b1={n:3};
        var b2=b1;
        //b1={n:6};console.log(b2.n);//3


        function  fn1(a){a={n:9}}//a={n:9}这是创建了一个新的对象
        fn1(b1);
        console.log(b1.n,b2.n);//3  3
로그인 후 복사

8 .js 엔진은 메모리를 어떻게 관리합니까?析JS 엔진은 JS 코드를 분석하는 코드입니다
(1). 메모리 수명주기 A. 필요한 메모리

b. 메모리 해제

*함수 실행을 위해 할당된 스택 공간 메모리: 함수 실행 후 자동 해제됨

* 객체 저장을 위한 힙 공간 메모리: 메모리에 대한 참조가 없으면 객체는 가비지 객체가 되며 가비지 수집기는 나중에 이 메모리를 회수하고 해제합니다.


        var a=3;
        function fn(a1){...}
        fn(a)//传递的是a的值(基本值)-----传递变量参数应该是值传递
        a=function (){...}
        fn(a)//传递的是a的值(引用类型也就是地址值)---
        //传递变量参数应该是值传递也可以说是引用传递
로그인 후 복사

관련 권장 사항:


데이터 가로채기에 대한 자세한 설명 JavaScript의 문제


JavaScript에서 PHP로 데이터를 전송하는 방법

JavaScript의 데이터 유형 변환 방법 요약_기본 지식

위 내용은 JavaScript의 데이터 변수에 대한 메모리 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿