여러분이 함수를 사용하려면 매개변수와 인수를 알아야 합니다.
매개변수(parameters, 파라미터), 인수(arguments, 아규먼트)의 의미 먼저 이해해 봅니다.
매개변수(파라미터)는 함수를 만들 때 어떤 값을 입력받을지 정하는 변수라 할 수 있습니다.
괄호() 안에 매개변수 이름을 지정해서 사용하면 됩니다.
1
2
3
|
function myFunc(a, b) {
return a + b;
}
|
cs |
myFunc는 함수 이름이고 괄호 안의 a, b가 매개변수가 됩니다.
인수(arguments)는 이렇게 함수를 정의할 때 선언한 a, b에 함수를 호출하면서 입력할 실제 값을 의미합니다.
myFunc(5, 6);
매개변수 a, b에 5, 6 값을 넣은 후 호출했습니다.
이때 5, 6이 인수입니다.
인수 사용하는 방법
인수는 객체입니다. 그리고 배열처럼 [i]를 붙여서 값을 가져올 수 있습니다.
함수를 호출할 때 설정된 매개변수로 인수를 전달하면 함수 내부에서 해당 인수 객체를
배열처럼 사용해서 값을 사용할 수 있습니다.
객체 이름은 arguments입니다.
arguments[i];
이렇게 함수 내에서 사용할 수 있습니다.
첫 번째 인수를 받으려면 arguments[0]로 i는 배열처럼 0으로 시작합니다.
중요한 점은 배열처럼이라는 표현을 썼는데요. 그 의미는 배열과 같은 객체는 아니라는 의미입니다.
사용법이 비슷해서 배열처럼이라는 표현을 사용하고 있습니다.
인수가 총 몇개인지 확인할 때 사용하는 속성은 length입니다.
var len = arguments.length;
1
2
3
4
5
6
7
|
function test(){
for (var i = 0; i < arguments.length; i++){
console.log(arguments[i]);
}
}
test(1, 2, 3, 4, 5);
|
cs |
잠깐!
이 코드는 좀 이상합니다.
test() 함수는 매개변수가 1개도 선언이 되지 않았지만 7번 라인을 보면 1,2,3,4,5를 인수로 넘기고 있습니다.
보통 자바라면 오류가 발생했겠지만,
자바스크립트는 아무렇지도 않게 받아 줍니다.
그리고 해당 값은 선언된 매개변수가 없기에 사용할 수 없지만
arguments[]를 사용해서 순서대로 값을 꺼내서 사용할 수 있게 됩니다.
정말 황당하네요. ^^
매개변수가 정해졌지만 인수를 설정하지 않는다면 해당 매개변수는 함수 내에서 변수와 마찬가지로 undefined가 할당됩니다.
1
2
3
4
5
6
|
function test(a, b){
console.log(a);
console.log(b);
}
test(1);
|
cs |
위 예제는 b 매개변수에 값을 넣지 않고 6번 라인처럼 호출을 한다면 undefined가 출력됩니다.
다르게 생각해 본다면 매개변수가 만들어지면 기본으로 undefined가 할당되어 있다고 생각하면 됩니다.
만약 b 값에 무조건 인수가 할당되어야 하고 undefined가 안되어한다면 기본값으로 설정할 수 있습니다.
test(a, b = 0)
이처럼 b 값이 필수여야 하며 기본(디폴트)으로 값이 무조건 있어야 한다면
그래서 사용자가 호출할 때 누락했다면 기본으로 0을 할당하는 방법으로 선언할 때 사용하면 됩니다.
나머지 매개변수 사용하는 방법
1
2
3
4
5
6
7
|
function test(a, ... others){
console.log(a);
console.log(others[0]);
console.log(others[1]);
}
test('a', 1, 2);
|
cs |
마지막으로 나머지 매개변수를 사용하는 방법을 알아봅니다.
위 예제를 보면... 뒤에 매개변수를 사용했습니다.
정해지지 않은 수만큼 인수를 받아야 하는 경우 위 예제처럼 점 3개를 사용하고 매개변수를 사용하면 됩니다.
해당 매개변수는 함수 내에서 배열로 사용할 수 있습니다.
자바스크립트는 정말 유연한 프로그램입니다.
그렇기에 더 자세히 살펴보면서 충분히 이해하고 사용한다면
다양한 기능을 사용할 수 있을 겁니다.
또한 자바스크립트를 깊이 공부하면서 다른 프로그램 언어 또한 깊이가 더해지는 느낌이 든답니다.
하나를 하더라도 제대로 전문가가 되어야 한다는 마음으로
열심히 읽고 코딩하면서 실력을 키워나가 봅니다.
'Software > JavaScript' 카테고리의 다른 글
[자바스크립트]프로토타입(prototype)은 무엇인가요? __proto__, [[Prototype]] (0) | 2022.11.20 |
---|---|
[자바스크립트]객체 만드는 방법, 생성자 (Object, constructor) (0) | 2022.11.06 |
[자바스크립트]함수 이야기 7탄, 클로저 사용하는 방법, 이해하기 편 (Closure) (0) | 2022.09.12 |
[자바스크립트]함수 이야기 6탄, 함수 중첩 이해하기. (0) | 2022.08.28 |
[자바스크립트]함수 이야기 5탄 - 재귀 함수와 함수 스택 이해하기. (0) | 2022.08.22 |