1. 인자를 생략한 함수 호출

- 함수 선언 시 파라미터가 함께 정의돼 있다 하더라도, 함수 호출 시 반드시 인자를 넣어야만 함수가 실행되는 것은 아니다. 단, 함수 내에서 그 파라미터를 사용하는 경우에는 그 값이 undefined로 처리된다. 예를 들어, 아래 코드는 콘솔창에 undefined를 출력한다.

1
2
3
4
5
function func_name(param1)
{
    console.log(param1);
}
func_name();

- 함수 선언 시 파라미터 위치에 ‘파라미터=초기값’ 꼴의 식을 써두면, 함수 호출 시 인자를 넣지 않은 경우 함수 실행 과정에서 그 파라미터는 (undefined가 아니라) 등식에 지정된 초기값을 갖는 것으로 처리된다. 예를 들어, 아래 코드는 콘솔창에 “사과”를 출력한다.

1
2
3
4
5
function func_name(param1 = "사과")
{
    console.log(param1);
}
func_name();

2. 파라미터를 생략한 함수 선언

- 함수를 선언하다 보면, 함수의 기능상으로는 함수로 들어오는 파라미터를 함수 내에서 사용할 필요가 없는데 함수로 반드시 인자를 넣어 호출하는 경우가 있다. (내장 함수가 인자로 콜백함수를 받는데 내가 현재 코딩하는 코드에서는 콜백함수로 인달되는 인자가 필요가 없는 경우 등.) 이런 경우에는 함수 선언 시 파라미터를 생략해도 무방하다.

- 예를 들어 함수 호출 시 전달되는 인자가 둘 이상인데 마지막 인자는 함수 내에서 사용할 필요가 없는 경우, 함수 선언 때 마지막 파라미터 선언을 생략해도 무방하다. 그런데 만약 마지막 인자가 아니라 중간에 있는 인자가 함수 내에서 사용할 필요가 없는 경우라면, 그 파라미터 위치에 언더바(_)를 쓰면 비교적 간결해 보이게 코드를 쓸 수 있다.

1
2
3
4
function func_name(_, pram2)
{
    ...
}