4 파라미터와 아규먼트

SUN·2022년 8월 25일

모던자바스크립트

목록 보기
4/8

파라미터와 아규먼트

-파라미터 (parameter)

함수를 밖에서 안으로 값으 전달할 때 사용

function params(food) {
	console.log(`I like ${food}!`);
}
  
params(beef);

1) 파라미터의 기본 값

function params(food = 'peaches') {
	console.log(`I like ${food}!`);
}
  
params();

함수의 파라미터에 아무 값을 주지 않아도 기본적으로 peaches가 출력된다.

2) 파라미터 기본값의 성질

function params(food = 'peaches', beverage) {
	console.log(`I like ${food}!`);
    console.log(`I like ${beverage}!`);
}
  
params(soju); // 기본값과 상관없이 첫번째 아규먼트에 값이 들어가고 두번째 아규먼트는 undfined로 나타난다. 
기본값을 주고 싶을때 가급적 오른쪽에 작성

params(undefined, soju)// undefined를 주면 기본값이 들어간다.

3) 파라미터에서 파라미터를 활용

function params(x, y = x+3) {
	console.log(`x: ${x}`);
    console.log(`I like ${beverage}!`);
}

params(2);

x의 값이 2면 y의 값에 x가 적용이되어 y의 값은 5가 된다.

-아규먼트 (arguments)

파라미터에 전달된 값을 아규먼트에 넣는다.

파라미터가 3개일 때
1개의 값만 넣으면 나머지 값이 undefined로 나타나고
파라미터의 값보다 초과하여 넣으면 초과된 값은 무시당한다.

이 때 arguments 객체를 사용할 수 있는데

function argu ( a, b, c) {
	console.log(a)
    console.log(b)
    console.log(c)
    console.log(arguements)
    console.log(------)
 }
 
 argu('I', 'live', 'in', 'NY')
 argu('I')
 argu('I', 'live', 'in')
 argu('I', 'live')
 
이때 console.log(arguements)는 유사배열의 형태로 값을 나타낸다. length, [i]  등을 사용할 수 있다.
 console.log(arguements.length)
 console.log(arguements[0])
 
 그리고 for ...of 문을 통해 반복작업도 가능하다.
 
 function argu ( a, b, c) {
	for (const arg of arguments) {
    	console.log(arg);
    }
 }
 
 를 사용하면 전달되는 값의 길이에 따라 유연하게 변화가 가능하다.
 

Rest Parameter

  • argument는 유사 배열이기에 배열을 사용할 수 없다.
  • argument는 전체를 다루기 때문에 원하는 요소만 다루기 힘들다.
  • rest parameter는 이를 해결
function argu ( ...args) {
	for (const arg of args) {
    	console.log(arg);
    }
 }

argument 객체 대신 ...args를 사용 (마침표 세개가 핵심)

  • 배열의 메소드로 사용가능 (splice 사용가능)
  • 파라미터에 지정할 파라미터를 넣고 마지막에 rest parameter를 사용 가능
 function argu (first, second, ...others) {
 	console.log(`우승: ${first}`)
    console.log(`준우승: ${second}`)
 
  	for (const arg of others) {
      	console.log(`참가자: ${others}`);
    }
        }
for문을 안쓰고 바로  console.log(version.splice(0,1)) 이런 식으로도 사용가능

이런 식으로 사용할 수 있다. 첫번째 두번째 아규먼트는 파라미터롤 전달되고 나머지는 rest parameter로 사용

일반 argument보다 더 활용성이 있다.

profile
안녕하세요!

0개의 댓글