자바스크립트에는 원시값과 참조값이 있다. 둘의 차이점을 알아보자.
✔️ 원시 값을 할당한 변수에 재할당을 해도 기존의 데이터 값은 변경되지 않는다. 재할당한 원시값은 새로운 데이터 주소값에 올라가게된다.
let myAge=10; let myAge2 = myAge; myAge= 20;
--> myAge = 20
--> myAge2 = 10
✔️ 메모리 영역의 새로운 데이터 주소값에 생기는 원시값과 다르게 기존에 있는 객체의 값을 참조하여 값을 변경한다.
let myInfo = {age:10}; let myInfo2 = myInfo; myInfo.age = 20; myInfo.name = "sran"; //myInfo2 출력 document.write(myInfo2.age); -->20 document.write(myInfo2.name); --> sran //myInfo 출력 document.write(myInfo.age); -->20 document.write(myInfo2.name); --> sran
메모리 위치에 있는 것을 직접 접근하는 방법은 자바스크립트는 허용하지 않기 때문에, 객체를 이용하여 직접 접근해서 값을 바꾸는 것이 참조값이다.
let myAge; //undefined let myName = null; // null
let myName = "sran";
document.write(myName.length);
let myAge; myAge = 10; document.write(typeof myAge); //number (숫자 타입으로 자동 변환) myAge = "10"; document.write(typeof myAge); // string (문자 타입으로 자동 변환
--> 이러한 자동 변환은 묵시적 타입 변환이라고 한다.
let myAge; document.write(Number(myAge)); // 숫자 타입 변환
- 명시적 타입 변환의 종류