원시값

var A = 10;

변수에 원시값을 참조하는 참조값 할당

식별자 메모리주소
A 3000 3001
3001 10
3002
3003
3004
3005
3006
3007
3008
3009
3010
var A = 10;

A = 10 * 10;
식별자 메모리주소
A 3000 3002
3001 10
3002 100
3003
3004
3005
3006
3007
3008
3009
3010

변수에 원시값을 참조하는 참조값 재할당

RESET

var A = 10;
식별자 메모리주소
A 3000 3001
3001 10
3002
3003
3004
3005
3006
3007
3008
3009
3010

변수에 원시값을 참조하는 참조값 할당

var A = 10;

var B = A;
식별자 메모리주소
A, B 3000 3001
3001 10
3002
3003
3004
3005
3006
3007
3008
3009
3010

변수에 원시값을 참조하는 참조값 복사

var A = 10;

var B = A;
A = 10 * 10;
식별자 메모리주소
B 3000 3001
3001 10
A 3002 3003
3003 100
3004
3005
3006
3007
3008
3009
3010

변수에 원시값을 참조하는 참조값 재할당

객체

var A = { state: "unchanged" };

변수에 객체를 참조하는 참조값 할당

식별자 메모리주소
A 3000 3001
3001 3002
state 3002 3003
3003 "unchanged"
3004
3005
3006
3007
3008
3009
3010
var A = { state: "unchanged" };

A.state = "changed";

객체의 프로퍼티 변경

식별자 메모리주소
A 3000 3001
3001 3002
state 3002 3004
3003 "unchanged"
3004 "changed"
3005
3006
3007
3008
3009
3010
var A = { state: "unchanged" };

A.state = "changed";
A.num = 3;
식별자 메모리주소
A 3000 3001
3001 3002, 3005
state 3002 3004
3003 "unchanged"
3004 "changed"
num 3005 3006
3006 3
3007
3008
3009
3010

객체의 프로퍼티 동적생성

※ 메모리주소는 바이트단위로 나눠진게 아닌 단순 번지수라 생각해주세요.

RESET

var A = { state: "unchanged" };

변수에 객체를 참조하는 참조값 할당

식별자 메모리주소
A 3000 3001
3001 3002
state 3002 3003
3003 "unchanged"
3004
3005
3006
3007
3008
3009
3010

다른 변수에 참조값 복사

식별자 메모리주소
A 3000 3001
3001 3002
state 3002 3003
3003 "unchanged"
B 3004 3001
3005
3006
3007
3008
3009
3010
var A = { state: "unchanged" };

var B = A;
var A = { state: "unchanged" };

var B = A;
A.state = "changed";

객체의 프로퍼티 변경

식별자 메모리주소
A 3000 3001
3001 3002
state 3002 3005
3003 "unchanged"
B 3004 3001
3005 "changed"
3006
3007
3008
3009
3010
var A = { state: "unchanged" };

var B = A;
A.state = "changed";
B.num = 3;
식별자 메모리주소
A 3000 3001
3001 3002, 3006
state 3002 3005
3003 "unchanged"
B 3004 3001
3005 "changed"
num 3006 3007
3007 3
3008
3009
3010

객체의 프로퍼티 동적생성

RESET

var A = { state: "unchanged" };

변수에 객체를 참조하는 참조값 할당

식별자 메모리주소
A 3000 3001
3001 3002
state 3002 3003
3003 "unchanged"
3004
3005
3006
3007
3008
3009
3010

참조값 재할당

식별자 메모리주소
A 3000 3004
3001 3002
state 3002 3003
3003 "unchanged"
3004 3005
isChanged 3005 3006
3006 false
3007
3008
3009
3010
var A = { state: "unchanged" };

A = { isChanged: false  };

END

deep-dive-week01

By Yongki Kim

deep-dive-week01

  • 120