let a =[1,2,3], let b=[1,2,3]일때 a===b가 false인지 궁금합니다(장문주의)
let a = 1, let b = 2 일 때 a===b가 true인 이유가 다음과 같은 과정이라고 이해했습니다. 1. let a =1;를 선언함 2. 빈 공간의 메모리에 변수 명(식별자)a와 변수 값이 undefined로 할당됨 3. 원시 값 1를 저장하기 위해 메모리의 새로운 공간에 메모리주소 #001(예로 듦)과 원시 값인 1이 저장됨. 4. 처음에 만든 a라는 변수 명을 가진 메모리의 변수 값이 undefined에서 원시 값 1의 메모리 주소인 #001로 다시 저장됨. 5. 즉 a = #001가 됨. 6. 이때 let b = 1;을 선언함 7. 위의 과정을 반복해야하지만 JS 엔진의 메모리 최적화를 위해 같은 원시 값을 공유할 때는 새로 메모리를 생성하지 않고 #001를 참조함 8. 따라서 a = #001이고, b = #001이기 때문에 a===b가 true 근데 왜 참조 타입인 배열은 false인가요? 위의 과정과 어느 부분이 달라서 그런지 궁금합니다.
Loading...