함수의 목적은 '재사용' 이다. 아주 간단한 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) 라고 부른다.
함수를 만들 때 매개변수를 작성해주고, 추후 함수를 이용하고자 할 때 전달 인자를 입력해준다.