리코딩 : 자바스크립트(JavaScript)

자바스크립트 8. 매개변수(Parameters)

BreezeBm 2020. 10. 14. 16:37

오늘은 자바스크립트 매개변수에 대해서 기록해보자. 

function timeToGoCafe (speed, distance) { // () 소괄호 안에 들어가는 것이 매개변수, 여기서는 speed와 distance
  let time = distance / speed;
  return time;
}

timeToGoCafe(10, 100); // 여기 ()소괄호 안에 들어가는 것을 전달인자(arguments)라고한다.

전달인자가 아름답게 갯수에 맞게 들어간다면 얼마나 좋을까? 그런데 만약에 전달인자의 길이가 유동적이라면? 어떻게 해야할까? 이럴 때는 Rest Parameter를 이용해서 매개변수를 지정해준다. 이 때 매개변수는 배열의 형태로 전달된다. 

 

function numbers(...nums) {
  console.log(Array.isArray(nums)); // true
  console.log(nums) // [1, 2, 3, 4, 5]
}

numbers(1, 2, 3, 4, 5);

Rest Parameter(나머지 매개변수)는 매개변수 이름 앞에 세개의 점 '...'을 붙여서 넣으면 된다!

 

//1번
function numbers(num1, ...nums) {
  console.log(num1); // 1
  console.log(nums); // [2, 3, 4, 5]
}

numbers(1, 2, 3, 4, 5);

//2번
function numbers2(...nums, num1, num2) {/*생략*/}

numbers2(1, 2, 3, 4, 5);
// SyntaxError: Rest parameter must be last formal parameter

위의 2개의 코드를 보면 알 수 있는 사실은 나머지 매개변수반드시 마지막에 위치해야 한다!

Rest Parameter가 아닌 arguments라는 키워드를 이용할 수도 있다.

 

function foo () {
  console.log(arguments); // {0:0, 1:1, 2:1, 3:2, 4:3}
}

foo(0, 1, 1, 2, 3);

 

다만 이 arguments객체는 배열같이 보이지만, 배열이 아니다. 그럼 뭐냐고? 유사배열이라고 한다.. ^^;; 그렇기 때문에 배열의 메소드를 사용할 수 없다. 

 

그리고 매개변수에 기본값(Default Parameter)을 할당해 줄 수도 있다. 다음의 코드를 살펴보자.

function findRoute(startingPoint = 'Busan', destianation) {
  return '출발지: ' + startingPoint + ','
       + '도착지: ' + destination;
}

getRoute('Seoul'); // '출발지: Busan, 도착지: Seoul'

이렇게 매개변수에 기본값 자체를 할당해줄 수 있습니다. 이 때 문자열/숫자/객체 등 어떠한 타입도 가능하다!

 

다음은 어떤 것을 기록해 볼까?