참조변수와 일반변수

  • 참조변수 : 객체를 변수에 선언한 것
  • 일반변수 : 기본타입을 변수에 선언한 것
    - 기본 타입
    Boolean,null,undefined,number,string 등등

일반변수 값의 복사와 변화

  • 일반변수는 값을 복사할때 변수의 값만 복사해서 출력한다.
  • const는 변수가 아닌 상수이기 때문에 값을 바꿀 수 없다.
    var a= 12;
    var a2 = a;
    a = 12;
    a2 = 12;
    a === a2 -> true
    //a2값에 변화를 줘보자
    a2 = 14;
    a = 12
    ** a === a2 -> false **
    • 일반변수의 값(a)을 복사해서 새로운 변수(a2)에 선언하고, 새로운 변수(a2)의 값을 바꾸면 새로운 변수(a2)의 값은 변하지만, 복사해온 변수(a)의 값은 변하지 않는다.

참조변수의 동작 방식 이해하기

  • 참조변수의 값 전달은 일반변수와 다르게 된다.
  • 복사한 값을 바꾸면 새로운 변수의 값도 바뀌고, 새로운 변수의 값을 바꿔도 복사한 값이 바뀐다.
  • 쉽게 설명해서
    나 = 정혜원(객체)
    혜원 = 정혜원
    --값을 바꾼다.
    혜원 = 피기
    --결과
    나 = 피기(객체)
    혜원 = 피기
    var people = {name : "혜원", hight : 160};
    var p2 = people;
    p2 === people
    // p2값에 변화를 줘보자
    p2.name = "동윤";
    p2 = {name : "동윤", hight : 160}
    peple = {name : "동윤", hight : 160}
    • 참조변수는 복사해온 객체의 속성도 바꿔버림. 둘이 같이 바뀐다
    • 그럼 새로운 객체를 만들땐 어떻게 해야 하는가?
      • 직접 생성하거나, 객체 생성자를 이용한 경우 new를 사용해서 생성한다.

요약

  • 값 전달 변수는 함수 내부에서 값을 바꿔도 외부에서는 그대로이다.(call by value)
  • 참조 전달 변수는 함수 내부에서 값을 바꾸면 외부의 객체도 값이 바뀐다.(call by reference)
profile
매일 조금씩 성장하는 개발자!

0개의 댓글