function showName(name) {
console.log(name);
}
showName('Mike'); // 'Mike'
name을 전달하면 name을 콘솔에 찍어준다.
만약 이름을 하나 더 전달하면 어떻게 될까?
function showName(name) {
console.log(name);
}
showName('Mike'); // 'Mike'
showName('Mike', 'Tom'); // ?
에러는 발생하지 않고 'Mike'만 콘솔에 출력된다.
자바스크립트에서 함수에 넘겨주는 인수의 개수는 제한이 없다.
인수의 개수를 정해놓고 함수를 만들어도 실제 호출할때 정확히 그 개수를 맞출 필요는 없다.
심지어 아무것도 전달하지 않아도 된다.
에러는 발생하지않고 다만 undefined가 찍힌다.
showName(); // undefined
함수의 인수를 얻는 방법은 2가지가 있다.
1. arguments로 접근
2. 나머지 매개 변수 사용
* 화살표 함수에는 arguments가 없다.
1. arguments
- 함수로 넘어 온 모든 인수에 접근 가능
- 함수내에서 이용 가능한 지역 변수
- length, index 있음
- Array 형태의 객체 : length, index 등의 속성을 가지고 있지만 배열의 내장 메서드는 없음(forEach, map 사용 불가)
function showName(name){
console.log(argument.length);
console.log(argument.[0]);
console.log(argument.[1]);
}
showName('Mike', 'Tom');
// 2
// 'Mike'
// 'Tom'
2. 나머지 매개변수(Rest parameters)
-정해지지 않은 개수의 인수를 배열로 나타낼수 있음
사용 방법 : ... + 배열 이름
*매개 변수가 여러개일 경우 마지막에 위치해야 함
function showName(...names){
console.log(names);
}
showName(); // []
showName('Mike'); // ['Mike']
showName('Mike', 'Tom'); // ['Mike', 'Tom']
names배열 안에 전달된 인수들이 들어간다.
아무것도 전달하지 않으면 undefined가 아닌 빈 배열[ ]이다.
'JavaScript' 카테고리의 다른 글
[JavaCript] function을 쓰는 이유 - 파라미터 (0) | 2022.11.04 |
---|---|
[JavaScript] 전개 구문(Spread syntax) (0) | 2022.09.16 |
[JavaScript] 구조 분해 할당 (Destructurning assignment) (0) | 2022.09.16 |
[JavaScript] 배열 메소드 2 : sort(), reduce() (0) | 2022.09.16 |
[JavaScript] 배열 메소드1 : splice(), slice(), concat(), forEach(), indexOf(), find(), filter(), map() (0) | 2022.09.15 |
댓글