궁금한점 질문드립니다!
517
작성한 질문수 1
13:05부분 보면
yuJin1과 yuJin3가 각각 다른 메모리 주소를 갖고 있기 때문에 false라고 하셨는데
만약 let a = 1; let b = 1;이면 a === b는 true잖아요
제가 배우기로는 a와 b가 같은 주소 값을 가르키고, 같은 주소 값을 가르키는 이유는 JS 엔진이 메모리 최적화를 위해 메모리를 공유한다던데
왜 참조 타입인 객체는 메모리 최적화를 위해 메모리를 공유하지 않나요??
답변 1
0
안녕하세요!
말씀주신 예제에서 a와 b가 같은 메모리 공간을 가리키는 이유는 primitive 값이기 때문입니다.
'최적화' 때문에 이렇게 설계된건지는 모르겠지만 같은 primitive 값의 메모리 공간을 하나로 통일하는건 논리적으로 당연한 일입니다.
1이라는 값을 실제 primitive 형태로 사용한다 생각했을때 다른 메모리 공간을 참조했으면 하는 시나리오는 아마 없을겁니다.
객체가 생성될때마다 다른 메모리 공간을 가리키게 하는건 JS 뿐만 아니라 대부분의 언어에서 똑같이 작동합니다. 만약에 값이 똑같다고 매번 같은 주소를 차지하게밖에 못한다면 같은 프로퍼티들을 들고있는 객체들을 여럿 생성하고싶은 시나리오가 있을때 문제가 됩니다. 하나의 객체의 값만 변경하면 모두 변경되기 때문이죠.
대부분의 언어가 이런 시나리오를 따르는 이유는 이런 흐름이 논리적이기 때문입니다. (제가 모든 언어를 다 아는건 아니니까 대부분의 언어라고 했지만 제가 아는 한에서는 모든 언어가 그렇습니다.)
그리고 정확히 따져보면 강의에서도 보여드린것처럼 객체를 생성할때 같은 값을 갖고 있더라도 생성의 순간에는 매번 새로운 메모리 공간을 차지하는 것 뿐입니다. 변수에 변수를 직접 assign 하는경우 값이 객체더라도 copy by reference 입니다.
감사합니다!
EXPLOPER에서 파일을 삭제하는 방법을 알려주세요 ㅜㅜ
0
103
2
&& ||가 너무 햇갈려요
0
98
2
js에선 string값이 아스키코드값으로 저장되지 않나요?
0
76
2
여러줄에 주석 쓰는 방법 질문
0
122
1
출력이안되요 ㅜㅜ
0
824
3
선생님, 감사해요
0
252
2
Factory Constructor를 언제 사용하나요?
0
233
2
n개의 await를 사용하면, 이들은 promise chaining 처럼 동작하나요?
0
170
1
안유진을 얼마만큼 좋아하시는 건가요?
7
471
2
단축 평가 (short circuit evaluation) 패턴 관련 질문있습니다.
0
220
1
클래스를 써야할때와 함수를 써야할때
0
317
2
혹시 공부한 내용을 개인 블로그(티스토리 등)에 요약해서 올려도 될까요 ?
0
336
1
Copy by Value에 대해 질문있습니다!
0
260
2
메모리 강의 중 메모리 활용 부분 질문드립니다.
0
275
1
Super Keyword 질문 있어요!
0
336
1
Static Keyword 질문 있어요!
0
274
1
Object.setPrototype(ray, IdolModel.prototype); 호출 후, ray.dance()가 실행되는 이유를 모르겠어요
1
496
2
선생님 저 멍청한거 맞죠?
0
747
2
sort 함수에 대해 궁금한 점이 있습니다.
0
436
1
대소관계 비교할 때 문자열과 비교할 경우
0
351
1
const 에서
0
412
1
함수 안 변수 키워드를 var를 사용하시는 이유가 궁금합니다.
0
558
1
Arrow 함수 질문있습니다.
2
366
1
scope에 대해 질문 있습니다.
0
324
1





