김예희·2023년 8월 16일
0

값이란?

  • 조작 가능한 어떤 표현
  • 문자열, 문자, 숫자 등이 가진다.

자바스크립트에는 원시값과 참조값이 있다. 둘의 차이점을 알아보자.

원시값

  • 원시적인 값
  • 단순 값
  • 단순 데이터
  • ex) 숫자, 문자열, Boolean, null, undefined

✔️ 원시 값을 할당한 변수에 재할당을 해도 기존의 데이터 값은 변경되지 않는다. 재할당한 원시값은 새로운 데이터 주소값에 올라가게된다.

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

📌 정리하면!

메모리 위치에 있는 것을 직접 접근하는 방법은 자바스크립트는 허용하지 않기 때문에, 객체를 이용하여 직접 접근해서 값을 바꾸는 것이 참조값이다.


undefined

  • 값의 유뮤 표현
  • 빈 값, 없는 값: 변수 선언 후 값을 할당받지 않은 상태
  • 유일한 값
  • 원시 값
  • let, va로 선언한 변수는 자바스크립트에서 undefined로 초기화

null

  • undefined와 동일하게 값이 없는 상태인데, 값이 없다는 것을 개발자가 의도적으로 명시하는 방법 (변수 초기화)이다.
  • null은 null 타입이면서 객체(object) 타입이다.
    let myAge; //undefined
     let myName = null; // null

래퍼 객체 (wrapper Object)

  • 원시 타입을 객체화한다. -> new String()
  • 임시 객체 생성
    *원시 타입? number, string, Boolean, undefined, null

래퍼 객체 변환 과정

  1. 원시 타입에 해당하는 객체 생성
  2. 생성된 객체의 함수 호출
  3. 함수 처리
  4. 생성된 객체 소멸
  5. 원시 타입만 존재
let myName = "sran";
document.write(myName.length);
  1. myName = new String("sran") 임시 생성
  2. 객체의 고유 메소드 length 호출
  3. length 메소드 처리
  4. my Name = new String("sran")소멸
  5. let myName = "sran"; 원시 타입만 존재

타입 변환

  • 다른 타입 값 대입이 가능하다.
  • 타입 변환의 종류는 두가지가 있다. 묵시적 & 명시적

묵시적 타입 변환

let myAge;
myAge = 10;
document.write(typeof myAge); //number (숫자 타입으로 자동 변환)
myAge = "10";
document.write(typeof myAge); // string (문자 타입으로 자동 변환

--> 이러한 자동 변환은 묵시적 타입 변환이라고 한다.


명시적 타입 변환

  • 자동 변환 이외에 다른 타입으로 변환이 필요할 때 사용한다.
    let myAge;
    document.write(Number(myAge)); // 숫자 타입 변환

- 명시적 타입 변환의 종류

  • Number() : 문자 -> 숫자
  • String() : 숫자,불리언 -> 문자
  • Boolean() : 문자, 숫자 -> 불리언
  • Object() : 모든 자료형 -> 객체
  • parseInt() : 문자,소수점 있으면 -> 정수
  • parseFloat() : 문자,소수점 있으면 -> 소수

0개의 댓글