javascript - 함수(Function)란 무엇일까?
- 프로그래밍/자바스크립트
- 2021. 5. 27.
함수란 무엇일까요? 일반적으로 프로그래밍에서 함수는 특정 목적을 달성하기 위해 설계된 동작 혹은 코드라고 말할 수 있습니다. 예를 들어 안녕하세요 라는 메시지를 출력하는 프로그램을 만들어야 한다고 하면 이렇게 작성해 볼 수 있습니다.
// "안녕하세요!" 메시지를 출력하는 함수를 정의한다.
function sayHello() {
console.log('안녕하세요!');
}
// 함수를 실행시킨다.
sayHello();
어떻게 보면 함수는 프로그래밍의 본질이라고도 말할 수 있습니다. 특히 자바스크립트에서의 함수가 가진 역할은 C#이나 Java와 같은 언어에서 예기하는 함수와는 본질적으로 다른 부분이 많습니다. 객체지향 언어들이 몇 년 전부터 함수형 프로그래밍의 패러다임을 도입하고는 있지만 프로그램 언어가 가지는 태생적인 부분이 달라, 아직은 자바스크립트가 가진 함수형 프로그래밍의 막강함을 보여주기는 어렵습니다.
자 그럼 본격적으로 자바스크립트를 통해 함수를 알아보도록 하겠습니다.
함수를 선언하는 규칙
위의 그림은 자바스크립트에서는 함수를 선언(function declaration)하는 방법입니다. 그림을 문장으로 옮겨보면, 함수를 선언하는 방법은 다음과 같습니다. function이라는 키워드를 이용해 "함수" 타입을 명시한 뒤 함수의 이름을 정의하고, "{}" 중 괄 화를 이용해 함수가 하는 일(함수 몸체)을 정의합니다. 이렇게 몇 가지의 규칙을 통해 우리는 함수를 선언할 수 있습니다.
약간 번외의 성격을 가진 이야기지만, 여기서 한 가지 알아두면 좋은 부분은 함수의 이름은 함수가 하는 일을 잘 설명하는 키워드를 통해 작성하는 것이 좋다는 것입니다. 작명이 잘 된 함수 이름은 함수에 정의된 내용(함수 몸체)을 보지 않고도 함수가 어떤 일을 하는지 설명해줍니다. 서문에서 예제로 작성한 sayHello() 함수도 이름만으로 무슨 일을 하는 함수인지 알 수 있습니다. 많은 프로그래밍 기초 입문 서적들은 함수를 설명하지만 이런 부분은 이야기하지 않습니다.
함수를 사용해보자
프로그램은 함수를 "선언"만 한다고 해서 원하는 결과를 만들어 낼 수 없습니다. 함수를 "선언"도 하지만 "실행"도 해야 결과를 확인할 수 있습니다. 가령 greeting() 함수를 사용해 인사를 하고 싶다면 아래와 같은 코드를 작성할 수 있습니다.
function greeting() {
console.log('안녕하세요. 처음 뵙겠습니다.');
};
greeting();
함수를 호출(혹은 실행)하는 방법은 함수를 선언하는 방법보다 간단합니다. 선언한 함수의 이름을 쓰고 난 다음에 "()" 괄호를 씁니다. 예제에서는 greeting() 함수를 호출했기 때문에, 콘솔 창에 "안녕하세요. 처음 뵙겠습니다."라는 메시지를 출력합니다.
반환 값을 가지는 함수
함수는 실행될 때 단순히 "실행"만 되고 끝날 수도 있지만 "실행한 결과를 반환"하고 끝날 수도 있습니다. 함수가 정의하는 특정 목적이 결과를 되돌려주어야 하는 것일 수도 있기 때문입니다. 가령 우리가 어떤 물건을 사야 하는 일이 생겼는데, 해야 할 다른 일이 있어 A라는 사람에게 그 일(어떤 물건을 사야 하는 일)을 맡겼습니다. 이때 A는 어떻게 해야 할까요? A는 물건을 사서 우리에게 가져다주어야 합니다. 이것처럼 함수도 상황에 따라서는 결과를 되돌려주어야 합니다.
function getPrintMessage() {
return 'Hello world!';
}
함수에서 결과를 반환하는 방법은 return 키워드를 사용하면 됩니다. 함수 내부에서 return 키워드를 쓰면, 함수를 즉시 종료하고 return문 뒤에 있는 값을 반환합니다. 예제 코드는 "Hello world!"를 반환하게 만들어졌습니다. 만약 return문 쓰지 않는다면 함수는 undefined를 반환합니다. 자바스크립트의 null과 undefined에 대해서는 다른 글에서 다룬 내용이 있으니 한번 참고해보시면 좋습니다.
정리하기
이 글에서는 함수를 가볍게 배워보았습니다. 함수는 프로그래밍에서 가장 근원적이고 기본이 되는 핵심 개념입니다. 함수를 선언하고 사용하는 방법은 어렵지 않지만 잘 만들고 잘 사용하는 방법은 쉽지않습니다. 특히 자바스크립트 함수는 더 어렵습니다. 다만 그만큼 배우는 묘미도 있습니다.
'프로그래밍 > 자바스크립트' 카테고리의 다른 글
Javascript - 배열을 잘 사용하는 3가지 방법 [map, filter, reduce] (0) | 2021.05.29 |
---|---|
Javascript - call by value와 call by reference의 정의 (3) | 2021.05.28 |
Javascript - 배열의 요소를 무작위로 섞는 방법 [array, shuffle] (3) | 2021.05.26 |
Javascript - 키보드 이벤트를 활용한 움직이는 이미지 만들기 (3) | 2021.05.24 |
Javascript - 실무에서 활용하는 console.log() 사용 방법 (3) | 2021.05.20 |