JAVASCRIPT

자바스크립트 함수에 대해 알아봅시다!

김도현2 2023. 2. 27. 18:45
반응형

자바스크립트(JavaScript) 함수(function)에 대해 알아봅시다~

 

 

 

선언적 함수

 

선언적 함수는 함수를 선언할 때 function 키워드와 함께 함수 이름을 정의하고, 함수 내부 코드 블록을 중괄호({ })로 감싸는 방식으로 작성하는 함수입니다.

예를 들어, 다음과 같이 선언적 함수를 작성할 수 있습니다.

 

{
    function func( ){
        document.write("선언적 함수");
    }
    func( );
}

//결과: 선언적 함수
 
 

선언적 함수는 함수 선언 이후 어디서든 호출할 수 있으며, 함수 선언문의 경우 함수 호이스팅이 가능합니다.

함수 호이스팅이란, 함수 선언문이 소스 코드에서 어디에 있든지 상관없이 함수 선언 전에도 호출할 수 있는 것을 말합니다.

하지만 함수 호이스팅이 코드의 가독성을 해치고, 예상치 못한 동작을 유발할 수 있기 때문에 함수 선언문 대신 함수 표현식을 사용하는 것이 권장됩니다.

 

 

 

 

 

 

 

익명 함수

익명 함수는 함수를 정의할 때 함수 이름을 생략하고 작성하는 함수입니다.

즉, 함수 이름 대신에 function 키워드와 함께 매개변수와 코드 블록을 작성하는 것입니다.

예를 들어, 다음과 같이 익명 함수를 작성할 수 있습니다.

 

{
    const func = function( ){
        document.write("익명함수");
    }
    func( );
}

//결과: 익명함수

익명 함수는 함수 표현식으로 사용될 때 주로 활용되며, 콜백 함수나 클로저 등의 패턴에서 사용됩니다.

익명 함수를 사용하면 함수의 재사용성을 높이고 코드의 가독성을 개선할 수 있습니다.

하지만 익명 함수는 함수를 참조하거나 디버깅하는 것이 어렵기 때문에, 함수 이름을 명시하여 선언적 함수로 작성하는 것이 가독성과 유지보수성을 높이는 방법입니다.

 

 

 

 

매개변수 함수

매개변수 함수란, 함수의 매개변수(parameter)로 전달되는 함수를 말합니다.

즉, 함수를 매개변수로 전달받아서 내부에서 실행하는 것입니다.

매개변수 함수를 사용하면 함수의 재사용성을 높일 수 있습니다.

 

{
    function func (str){
        document.write(str);
    }
    func("매개변수 함수");
}

//결과: 매개변수 함수

이렇게 매개변수 함수를 사용하면, 함수의 기능을 확장하고 유연성을 높일 수 있습니다.

함수 내부에서 실행할 함수를 매개변수로 받아서, 함수의 기능을 완전히 바꿀 수도 있습니다.

 

 

 

return값 함수

 

return은 함수에서 값을 반환할 때 사용하는 키워드입니다.

함수 내부에서 return문이 실행되면, 해당 함수는 종료되고, return 뒤에 오는 값을 호출한 곳으로 반환합니다.

예를 들어, 다음과 같이 두 수를 더해서 결과를 반환하는 함수를 작성할 수 있습니다.

 

{
    function func( ){
        const str = "함수가 실행되었습니다.";
        return str;
    }
    document.write(func( ));
}

//결과: 함수가 실행되었습니다.

함수에서 return을 사용하면, 함수 외부에서 반환된 값을 변수에 저장하거나, 다른 함수의 매개변수로 전달할 수 있습니다. 또한, return을 사용하여 함수 내부의 로직 흐름을 제어할 수도 있습니다.

예를 들어, if문 등의 조건문을 사용하여 특정 조건에서 return을 호출하여 함수를 조기 종료할 수 있습니다.

 

 

전역변수와 지역변수

전역변수(global variable)와 지역변수(local variable)는 변수가 선언된 위치에 따라서 스코프(scope)가 결정됩니다.

 

전역변수는 함수 바깥에서 선언된 변수를 말하며, 어떤 함수에서도 참조할 수 있습니다.

전역변수는 프로그램 전체에서 공유되기 때문에, 여러 함수에서 값이 변경될 수 있어서 예기치 않은 문제가 발생할 수 있습니다. 또한, 전역변수는 메모리를 계속해서 차지하므로, 성능 저하의 원인이 될 수도 있습니다.

 

지역변수는 함수 내부에서 선언된 변수를 말하며, 함수 내부에서만 사용할 수 있습니다.

지역변수는 함수 내부에서만 유효하므로, 다른 함수에서는 사용할 수 없습니다. 또한, 함수를 호출할 때마다 지역변수가 새로 생성되므로, 변수명이 같아도 각 함수 내에서는 서로 다른 변수로 인식됩니다.

 

지역변수는 전역변수와 달리 함수 내에서만 사용되기 때문에, 프로그램의 다른 부분과 격리되어 있어서 예기치 않은 문제가 발생할 확률이 낮아집니다.

또한, 지역변수는 함수 호출이 끝나면 메모리에서 제거되므로, 메모리 사용에 효율적입니다.

 

 

 

재귀 함수

재귀 함수는 함수가 자기 자신을 호출하여 작업을 수행하는 함수입니다.

 

재귀 함수는 다음과 같은 특징을 가지고 있습니다.

  1. 기본 단계 : 재귀 함수를 호출하는 과정에서, 어느 시점에서는 자기 자신을 호출하지 않고 종료되어야 합니다. 이러한 종료 조건을 기본 단계(base case)라고 합니다.
  2. 재귀 단계 : 재귀 함수에서는 기본 단계를 제외한 경우, 함수가 자기 자신을 호출하여 작업을 수행합니다. 이러한 호출을 재귀 단계(recursive case)라고 합니다.

재귀 함수는 주로 트리, 그래프 등의 자료구조에서 사용됩니다. 예를 들어, 이진 트리에서 모든 노드를 방문하고자 할 때, 재귀 함수를 사용하여 트리의 각 서브트리를 순회할 수 있습니다.

다음은 1부터 n까지의 합을 구하는 재귀 함수의 예시입니다.

 

 

function sum(n) {
  // 기본 단계
  if (n === 1) {
    return 1;
  }
  
  // 재귀 단계
  return n + sum(n - 1);
}

document.write(sum(5)); 

//결과: 15

 

위 함수에서는 n이 1일 때 기본 단계를 반환하고,

그 외에는 자기 자신을 호출하여 n - 1까지의 합을 구한 후, n과 더하여 반환합니다.

 

 

 

내장 함수

 

내장 함수는 프로그래밍 언어 자체에서 제공하는 함수로, 개발자가 별도의 구현 없이 바로 사용할 수 있는 함수입니다.

대부분의 프로그래밍 언어는 내장 함수를 제공하며, 이 함수들은 보통 매우 일반적인 기능을 수행합니다.

 
 

내장 함수는 다음과 같은 종류로 나뉘어질 수 있습니다.

  1. 수학 함수: 대표적으로 Math 객체에 속한 함수들이 있습니다. 예를 들어, Math.random() 함수는 0부터 1 사이의 난수를 생성합니다.
  2. 문자열 함수: 문자열을 조작하는 함수로, 대부분의 프로그래밍 언어에서 문자열 함수를 제공합니다. 예를 들어, 문자열 길이를 반환하는 length() 함수, 문자열을 분리하는 split() 함수 등이 있습니다.
  3. 배열 함수: 배열을 조작하는 함수로, 대부분의 프로그래밍 언어에서 배열 함수를 제공합니다. 예를 들어, 배열 요소를 추가하는 push() 함수, 배열 요소를 정렬하는 sort() 함수 등이 있습니다.
  4. 날짜 함수: 날짜와 시간을 다루는 함수로, 대부분의 프로그래밍 언어에서 날짜 함수를 제공합니다. 예를 들어, 현재 날짜와 시간을 반환하는 Date.now() 함수, 날짜와 시간을 문자열로 변환하는 toLocaleString() 함수 등이 있습니다.
  5. 형 변환 함수: 자료형을 변환하는 함수로, 대부분의 프로그래밍 언어에서 형 변환 함수를 제공합니다. 예를 들어, 문자열을 숫자로 변환하는 parseInt() 함수, 숫자를 문자열로 변환하는 toString() 함수 등이 있습니다.

내장 함수를 사용하면, 개발자는 일반적인 작업을 쉽게 수행할 수 있습니다. 이외에도, 내장 함수는 보통 최적화되어 있어서 빠른 실행 속도를 보장합니다.

 

 

 

 

함수들을 살펴봤는데 많은 종류의 함수들이 있네요..!!