함께 성장하는 프로독학러
5. 매개변수의 기본값을 설정해준다, default parameter 본문
안녕하세요, 프로독학러 입니다.
이번 포스팅에서는 함수를 정의하는 단계에서 파라메터(*파라메터=매개변수)의 기본값을 설정하는 것에 대해서 알아보겠습니다.
먼저 표현식을 보겠습니다.
function [name]([param1[ = defaultValue1 ][, ..., paramN[ = defaultValueN ]]]) { statements }
함수의 이름을 정하는 name뒤에 오는 괄호안에 매개변수를 지정합니다. 이 때, 기본 값을 할당할 수 있습니다.
예제를 통해 이해해 봅시다.
1 2 3 | function add (a=0, b=10){ return a+b; } | cs |
위의 예제에서 add라는 함수를 정의할 때 파라메터를 적는 부분에 a=0, b=10이라고 정의 했습니다.
값으로 들어오는 a와 b에 대해서 기본값을 설정한 것입니다.
add함수의 default parameter가 설정된 상황에서 아래의 코드를 실행하면 각각 어떤 결과가 나올까요?
1 2 | add(10); add(10, 15); | cs |
첫 번째 함수를 실행할 때는 인자가 한 개만 들어왔습니다.
그리고 두 번째 함수를 실행할 때는 인자가 두 개 들어왔습니다.
결과는 다음과 같습니다.
1 2 | add(10); //20 add(10, 15); //25 | cs |
첫 번째의 결과는 20을 리턴하고 두 번째의 결과는 25를 리턴합니다.
첫 번째 함수의 실행에서는 인자가 하나(10) 들어옵니다. 이는 함수를 정의 단계에서의 파라메터 a를 의미합니다.
a의 기본값은 0 이었지만 10이 들어왔기 때문에 들어온 값을 a로 인식합니다. 그러나 b는 함수의 호출로부터 전달되지 않았기 때문에(인자가 하나만 들어옴) 기본값인 10을 그대로 사용합니다.
즉, a=10(인자로 들어온 값), b=10(기본값) 이므로 a+b의 결과로 20이 리턴됩니다.
반면 두 번째 함수의 실행 결과는 첫 번째의 예제와 달리 두 개의 인자가 함수의 호출에 사용됩니다.
이때는 a와 b모두 기본값이 아닌 인자로 들어온 값이 할당됩니다.
따라서 a+b의 값인 25가 리턴됩니다.
default parameter가 없을 때 기본값을 설정하는 것은 다음과 같았습니다.
1 2 3 4 5 6 7 8 9 10 | function multiply(a, b) { if(typeof b !== 'undefined'){ var b = b; }else{ var b = 1; } return a*b; } multiply(5); // 5 | cs |
함수의 몸톤 내에서 매개변수 b가 있는지 없는지 검사하여 있다면 b에 인자로 들어온 b를 할당하고, 없다면 1을 할당하는 예제입니다.
1 2 3 4 5 | function multiply(a, b = 1) { return a*b; } multiply(5); // 5 | cs |
위는 같은 예제를 default parameter를 사용했을 때의 예제입니다.
default parameter 가 있을 때와 없을때의 코드의 길이와 가독성이 훨씬 좋아진 것을 알 수 있습니다.
여기까지 default parameter에 대해서 알아봤습니다.
다음 포스팅에서는 ES6에서 객체를 쉽게 병합할 수 있도록 도움을 주는 object assign 에 대해서 알아보도록 하겠습니다.
감사합니다.
**참고 자료 (항상 감사드립니다)
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Functions/Default_parameters
*다녀가셨다는 표시는 공감으로 부탁드릴게요! (로그인 하지 않으셔도 공감은 가능합니다 ㅎㅎ)
'Programming > ES6' 카테고리의 다른 글
7. 문자열안에서 변수의 사용을 더 간단히, Template literals (0) | 2018.04.09 |
---|---|
6. 객체를 좀 더 쉽게 병합하는, Object.assign 메서드 (0) | 2018.04.07 |
* arrow function은 함수선언(function declaration)과 완벽히 같지는 않다 (0) | 2018.04.05 |
4. 인자로 들어올 미정의 수를 배열로 표현, 나머지 매개변수 (rest parameter) (0) | 2018.04.05 |
3. 배열을 좀 더 직관적으로 활용, 전개연산자 (spread operator) (0) | 2018.04.04 |