오늘은 자바스크립트 매개변수에 대해서 기록해보자.
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'
이렇게 매개변수에 기본값 자체를 할당해줄 수 있습니다. 이 때 문자열/숫자/객체 등 어떠한 타입도 가능하다!
다음은 어떤 것을 기록해 볼까?
'리코딩 : 자바스크립트(JavaScript)' 카테고리의 다른 글
자바스크립트 9. Scope(범위) (0) | 2020.10.15 |
---|---|
자바스크립트 8.1 Spread 문법 (전개문법) (0) | 2020.10.15 |
자바스크립트 6.1 배열, 객체의 반복문 (0) | 2020.10.14 |
자바스크립트 7. 객체(Object) (0) | 2020.10.07 |
자바스크립트 6. 반복문 탈출! (0) | 2020.10.07 |