생활코딩 영상을 보면서 JavaScirpt의 함수정의 방식을 설명하던 중
JavaScirpt는 함수형 언어이다 라는 표현을 보게 되었는데
함수형 프로그래밍에 대한 경우는 조금 더 고차원 적으로 다뤄야 할 필요가 있을 것 같아 본 게시글에서 아직 다루지는 않고 함수를 정의하는 방식에 대해서만 보고자 한다.
우선 이전에 C#이나 Java 에서 내가 사용해왔던 함수
Java에서는 Method 라고 하던데
거기서 정의 방식은 이렇게 사용했었다.
C#
접근(제어)자,반환형태,함수명,인자
public void Function (int a)
{
console.wirteline(a); // 실행할 내용
return;
void가 아니라 데이터 형을 명시할 경우
동일한 데이터형으로 반환해야 함
}
//클래스 상으로만 놓고 보자면 Java도 동일하지만 미묘하게 다른 부분도 있다.
Python
def Function(int a) :
return a
print(Function)
// 파이썬의 경우는 중괄호로 감싸는 것이 없다는 것에서도 생소함을 느꼈다
이에 비해 JavaScript에 경우 3가지로 함수를 정의한다
기본적인 형태
(function)함수라는의미, 함수명
function Function (parameter) {
return a + 1; 반환값
}
var a = 1;
Function(a);
변수에 함수를 정의하는 형태
(function)함수라는의미, 함수명
var a =
function Function (parameter) {
alert(a + 1);
return; 반환값 없이 Function을 실행하고 return 처리 할 수도 있음
}
여기서 기존 객체지향 언어인 C#과 Java에서는 변수는 변수이고
변수에 함수를 대입하는 것은 사용해 본 적이 없었는데
변수 자체에 함수를 대입하여 실행할 수 있다는 점에서 놀라웠다.
하지만 더 놀라웠던 것은 다음에 나올
익명함수라는 함수정의 방법이다.
익명함수에 경우 재사용의 목적인 함수의 개념으로 보자면
한번밖에 사용할 수 없지만, 함수를 따로 호출하지 않고
그 자리에서 실행을 할 수 있다는 점에서 획기적이라는 생각이 들었지만
알아두면 좋겠지만 실생활에서 많이 사용할 것 같지는 않은 것 같다.
하지만 상당히 놀라웠고 JavaScript에 대한 호기심이 더 들 수 밖에 없었다.