함수에서 사용되는 인수에 대해 조금 더 다룰려고 합니다.
function 함수명(인수){
}
0. 실인수와 가인수
인수는 존재 위치에 따라 두가지 이름으로 불립니다. 실인수는 호출하는 함수의 인수, 가인수는 함수 정의에 사용된 인수를 의미합니다.
function 함수명(가인수){
}
함수명(실인수);
1. 디폴트값 선언하기
다음과 같은 형식으로 인수에 디폴트값을 선언할 수 있습니다.
function 함수명(인수=디폴트값){
}
디폴트값을 설정하여 함수 내부에서 추가적으로 인수에 대입하는 과정이 사라져 간결한 함수를 만드는데 도움을 줍니다. 디폴트값에는 값 뿐만이 아니라 다른 함수, 인수, 식 등을 넣어서 이용할 수 있습니다.
다만, 디폴트값을 가진 인수과 그렇지 않은 인수를 혼합해서 사용할 경우에는 디폴트값을 가진 인수를 인수 리스트의 제일 마지막으로 보내어 선언해야합니다. 다음과 같은 코드에서 디폴트값 인수로 1이있으니 getAdd()의 결과는 4가 될거라고 예상됩니다.
function getAdd(num1 = 1, num2){
return num1 + num2;
}
console.log(getAdd(3));
그러나 결과는 NaN이 나옵니다. 그 이유는 3이라는 인수가 num1으로 전달되고 num2는 미정의된 상태로 존재하기 때문에 '3+undefined'라는 연산이 행해지고 그에 따른결과로 NaN으로 나오게되는겁니다. 이러한 동작때문에 디폴트값을 가지는 인수는 인수 리스트의 마지막으로 보내야합니다.
function getAdd(num2, num1 = 1){
return num1 + num2;
}
console.log(getAdd(3));
2. 전개 연산자
전개 연산자는 ES2015에서 추가된 새로운 연산자입니다.
전개 연산자는 배열형 자료를 추출하거나 연결할때 이용합니다. 사용은 점 세개(...)로 사용합니다. 이 연산자는 인수를 다룰때만 사용이 가능합니다.
전개 연산자 이용전에는 concat()과 같은 메소드를 이용하여 합쳐야 했는데 전개 연산자가 등장한 이후로 부터는 간결하게 합칠 수 있게되었습니다.
다음은 전개 연산자 등장 이전 concat()메소드를 이용한 결합입니다.
let arr1 = [1, 2, 3];
let arr2 = [4, 5, 6];
let combinedArr = arr1.concat(arr2);
console.log(combinedArr);
다음은 전개연산자를 이용해보겠습니다.
let arr1 = [1, 2, 3];
let arr2 = [4, 5, 6];
let combinedArr = [...arr1, ...arr2];
console.log(combinedArr);
훨씬 간결하고 직관적이게 두 개의 배열이 결합되었습니다.
전개 연산자는 배열뿐만이 아니라 객체에 대해서도 연산을 지원합니다.
let obj1 = {name: 'car', total: 3};
let obj2 = {state: 'engine_off', color:'yellow', isSell:'Not For Sale'};
let combined = {
...obj1,
...obj2,
};
console.log(combined);
참고로 전개 연산자를 객체에서 이용할때 중복된 키값은 나중에 오는 키값으로 덮어 씌워집니다.
'Programming > Javascript' 카테고리의 다른 글
[Javascript] 재귀 함수 (0) | 2021.02.26 |
---|---|
[Javascript] 함수에서 여러 값 반환하기 (0) | 2021.02.26 |
[Javascript] 스코프, 호이스팅 (0) | 2021.02.25 |
[Javascript] 사용자 정의 함수 4 - 애로우 함수 (0) | 2021.02.24 |
[Javascript] 사용자 정의 함수 3 - 함수 리터럴 (익명 함수) (0) | 2021.02.24 |
댓글