복습 #1 변수의 전달

Joshua Song / 송성현·2019년 11월 19일
0

프리코스_35

목록 보기
4/15

변수의 전달

첫번 째 복습 주제는 변수의 전달이다.

변수를 지정하고 전달할 하는 방법이 두가지가 있는데 하나는 값을 복사해서 전달, 다른 하나는 참조(주소값)을 복사해서 전달하는 것이다.

변수의 Type에 따라서 고정된 크기의 메모리에 복사하거나, 아니면 메모리 주소를 복사할 수 있다.

첫번째

첫번 째 Type은 Primitive Type 인데 Scalar 혹은 Simple Type이라고도 불린다. 말 그대로 Primitive Type은 값을 복사하는 타입!

  • Null

  • Undefined

  • Boolean

  • String

  • Number

두번째

두번 째 Type은 Reference Type인데 참조(메모리 주소)한다는 타입이다. 이름 그대로의 의미여서 어렵진 않다! Container 혹은 Complex Type이라고도 불린다.

  • Array

  • Object

  • Function

이렇게 설명만 하면 잘 기억을 하지 못하니 응용을 해보자....!

  • 변수의 타입에 따라 전달 방법이 달라진다!
// Example #1)

let a = "Hey I'm Joshua";

function trick (input) {

  input = "Hey I'm David"

}
trick(a);

이럴 경우 a의 값은 무엇일까???

Primitive Type은 복사를 해도 원본이 변하지 않고 복사본만 변한다. 그러므로 a의 값은 "Hey I'm Joshua"이다.

// Example #2)

let a = {name: "Joshua"}

function trick(input){

  input.name = "David"

}

trick(a);

Reference Type 은 복사를 할 경우 그 주소 값 (메모리 주소)을 복사하기 때문에 원본 값이 변한다.

TL;DR

요약하자면

Primitive Type (null, undefined, string, number, Boolean)은 함수를 통과해도 원본은 변하지 않고 복사본만 변한다..

Reference Type (Array, Object, Function)은 원본도 변한다. 메모리 주소를 복사하기 때문이다.

기억하자!

profile
Grow Joshua, Grow!

0개의 댓글