코드노트

자바스크립트 매개변수, 인수 본문

Code note/자바스크립트

자바스크립트 매개변수, 인수

코드노트 2022. 12. 5. 23:01

매개변수(parameter, 인자)

- 함수를 정의할 때 선언하며 함수 내부에서 변수와 동일하게 취급

- 매개변수는 함수가 호출될 때 생성이 된다.

- 일반 변수와 마찬가지로 undefined로 초기화된 이후 인수가 순서대로 할당된다. 

* 함수가 호출되지 않았을땐 매개변수를 활용할 수 없다.

 

- 매개변수의 개수는 제한되고 있지 않다. 그러나 최대 3개 이상을 넘지 않는 것을 권장한다. * 매개변수가 적을수록 좋다.

- 그 이상의 매개변수가 필요하다면 하나의 매개변수를 선언하고 객체를 인수로 전달받는게 유리하다. * jQuery의 ajax메서드


인수(argument)

- 값으로 평가될 수 있는 표현식이어야한다.

- 함수를 호출할 때 지정하며, 개수와 타입에 제한이 없다.


- 매개변수는 함수 몸체 내부에서만 참조할 수 있다.

* 매개변수의 스코프는 함수 내부이다.

- 자바스크립트 언어는 매개변수, 인수의 개수가 맞는지, 타입이 맞는지 확인하지 않는다. 즉 오류가 없이 실행된다!!


ex)

function add(x, y) {
  return x + y;
}

console.log(add(2) // NaN

- 매개변수가 2개 일 때 인수를 1개만 전달하게 되면 2 + undefined로 계산되어 NaN이 반환된다.


function add(x, y) {
  return x + y;
}

console.log(add(2, 5, 10)) // 7

- 매개변수가 2개 일때 인수를 3개 전달하게 되면 10은 무시되고 2와 5만 전달되어 7이 반환된다.

 

그래서 Error 문구를 반환되게 조건문을 사용할 수 있다.

function add(x, y) {
  if (y == undefined) {
    throw new TypeError("매개변수와 인수의 갯수가 맞지 않습니다.");
  } else if (typeof x !== "number" || typeof y !== "number") {
    throw new TypeError("매개변수에 숫자 타입이 아닌 값이 할달되었습니다.");
  }

  return x + y;
}

console.log(add(2)); // TypeError: 매개변수와 인수의 갯수가 맞지 않습니다.
console.log(add("a", "b")); // TypeError: 매개변수에 숫자 타입이 아닌 값이 할달되었습니다.

- 인수가 1개만 들어오면 두번째 매개변수는 undefined가 된다고 했다. y값을 확인하여 Error문구를 출력한다.

- 인수의 타입을 확인하여 Error문구를 출력한다.

 

 


- 여기서 그럼 10은 없어진걸까? 라고 생각할 수 있다.

10은 arguments 객체에 보관되어 있다.

function add(x,y) {
  console.log(arguments); // Arguments(3) [2, 5, 10, callee: ƒ, Symbol(Symbol.iterator): ƒ]0: 21: 52: 10callee: ƒ add(x,y)length: 3Symbol(Symbol.iterator): ƒ values()[[Prototype]]: Object
  return x + y;
}

add(2, 5, 10); // 7

- *arguments는 가변인자 함수를 구현할때 사용하는 객체이다. 매개변수의 개수를 정확히 확정할 수 없을 때 사용한다.