이 글에서는 js의 기본 구문인 데이터 유형과 변수 유형에 대해 소개합니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.
1. 변경할 수 없는 원래 값 (스택 데이터)(5개)
숫자(숫자), 문자열(문자열), 부울(부울), 정의되지 않음, null
여기에서 정의되지 않음은 정의되지 않음을 의미하고, Null은 비어 있음을 의미합니다. 그 사이에는 null에 값이 있지만 이 값은 비어 있는 반면, 정의되지 않음은 정의되지 않았으며 값이 전혀 없다는 의미입니다. null은 일반적으로 자리 표시자로 사용됩니다.
var a = 4; var b = a; a = 10; console.log(b);//4//原始值是把一个值a放到另一个值b里面,改了第一个值a,第二个之值b不变
2. 참조값(힙 데이터)
Array(배열), 객체(객체), 함수(함수)
참고: 변수에 값이 할당되는 한 메모리는 다시 Apply
var arr = [1, 2]; var arr1=arr; arr.push(3); console.log(arr1); //[1, 2, 3] //引用值时把第一个值放到第二个值里面,改变第一个值,第二个值也改变 //引用值是在栈内存里面存放堆的地址,拷贝的是地址,所以改变了arr,实际上是改变了arr指向的地址内存放的内容,而arr和arr1指向同一个地址,故arr1也跟着变
0x0002 | arr1 | |
rreee | 주소 Variables | |
store value | 0x0001 | a |
[1,2] | 0x0002 | |||||||||||||||||||
0x0001 | 0x0003 arr | [1,3] | ||||||||||||||||||
要避免使用连续赋值符号:下面举两个例子 a = {n:1 b == a={m:1console.log(b); 로그인 후 복사 1.var a = {n:1},在内存中申请两个地址,分别存放a和n; 2.var b = a;申请一个地址存放b,值指向a的地址; 3.a.n= a={m:1}; (1)(这里对变量进行了赋值,因此要重新申请内存)先申请了内存地址n(0x0004)和a(0x0005);由于n值占用了新的内存,故0x0001处 存储值由n:0x0002变为n:0x0004; (2)赋值;a={m:1},申请m地址(0x0006), 因此:a : {m:0x0006}--->{m:1} b: {0x0001}--->{n:0x0004}---->{ n:0x0005}---->{n:{m:0x0006}}--->{n:{m:1}}
|