1. 기술/웹, 자바스크립트

JavaScript - 함수 Parameter vs Argument

swsong 2019. 11. 2. 10:12

함수의 목적은 '재사용' 이다. 아주 간단한 sum() 함수를 살펴보자.

function sum(x, y){
    return x + y
}

console.log(sum(1,2))    //3
console.log(sum(2,4))    //6
console.log(sum(4,6))    //10
console.log(sum(10,20))  //30

 

 이 함수를 통해서 계산(합산)하고자 하는 데이터를 얼마든지 입력하고 그 결과를 반환받을 수 있다. 좀 더 복잡한 함수를 생각해보자. 

function impulse(x,y,z){
  return ((x+y)-z)*x*y*z
}
  
console.log(impulse(3,2,1))             //24
console.log(impulse(6,5,4))             //840
console.log(impulse(30,20,10))          //240000
console.log(impulse(9999999,8888,777))  //691157605537832500000

 

세 물체의 무게(x, y, z)에 따른 충격량의 총합을 계산해주는(말도 안되지만 그렇다치자) complex() 함수가 있다고 가정해보자. 우리는 impulse(역학-충격량) 라는 함수 명을 통해 이것이 충격량을 계산해주는 식이라는 것을 예상할 수 있다. 그리고 함수 내부적으로 어떻게 동작하는지, 굳이 난해한(말도 안되는) 수학을 이해하지 않고도 함수를 사용해 값을 얻어낼 수 있게 된다.

함수의 재사용성이다. 함수를 한 번 만들어 놓으면 100만 번이든 100억 번이든 얼마든지 쓰고 또 쓸 수 있다.

 

parameter(매개변수)와 argument(전달 인자)가 무엇인지 그리고 어떻게 다른지 알아보겠다. 함수의 재사용성을 이해했다면 두 개념 역시 쉽게 이해할 수 있다.

앞에서 sum()이라는 함수에 x, y라는 미지수가 들어있었다. 그리고 이 함수는 x + y를 return 했다. 함수가 받아내는 x와 y는 "변할 수 있는 값"이라는 뜻의 '변수'이며 '함수를 매개로 입력 값을 전달하는 변수'라는 의미에서 '매개변수'(parameter)라고 한다. 반대로 전달 인자이 매개변수를 통해 함수 내부로 전달하고자 하는 인자를 뜻한다. 즉, 입력할 '값'이다.

sum(1,2)
sum(2,4)
sum(4,6)

impulse(50,40,4)
impulse(200,20,2)
impulse(1000,100,200)


위 함수 괄호() 안에 들어 있는 숫자(여기서는 숫자지만 문자가 올 수도 있다.)는 모두 '전달 인자'(argument) 라고 부른다.

함수를 만들 때 매개변수를 작성해주고, 추후 함수를 이용하고자 할 때 전달 인자를 입력해준다.