본문 바로가기

자바스크립트 정리본

자바스크립트 : 함수

이번에는 함수에 대해 알아보겠습니다.

 

 

 

 

함수란

함수의 사전적 정의 : 어떤 집합의 각 원소를 다른 어떤 집합의 유일한 원소에 대응시키는 이항관계

어떠한 값을 입력 했을때 대응되는 값을 출력하는 수단으로,

말 그대로 A라는 집합의 원소들을 B라는 집합의 값으로 변화시키는 과정을 기록해놓은 객체입니다.

 

 

 

 

함수의 사용

javascript 에서 함수를 사용하기 위해서는 함수를 선언하고, 정의해야 합니다.

함수의 이름, 함수의 매개변수, 함수의 내용 3가지를 입력해야 합니다.

함수의 이름 : 변수명과 같이 함수를 구분하고 지정하는데 사용합니다.

함수의 매개변수 : 함수를 사용하기 위해 함수 외부에서 가져올 변수를 지정합니다.

함수의 내용 : 자바스크립트로 구성된 함수의 스크립트로, 매개변수를 이용하여 값을 반환합니다.

function [함수의 이름] ([매개변수의 집합])
{
    // 함수의 내용
}


// 예시 1
function add2 (number)
{
    return number+2;
}

// 예시 2
function sum (num1,num2)
{
    return num1+num2;
}

 

 

 

 

함수의 표현식

함수는 원래 명령문입니다.

하지만 함수를 특정 변수에 넣어 표현식으로 바꿀 수 있습니다.

const sum = function (a,b){
    return a+b;
};

console.log(sum(1,3));

이렇게 표현형을 사용하면 함수의 이름을 따로 지정하지 않아도 되며,

이때문에 익명함수라고 합니다.

 

 

 

 

매개변수

매개 변수는 변수의 타입에 따라 다르게 처리됩니다.

매개변수는 보통 값을 복사한것이기 때문에 매개변수값을 수정하더라도 원본값이 변화되지 않지만,

참조타입의 원소값, 예를 들어 배열타입의 인덱스값이나 객체타입의 원소값 등은

매개변수를 수정하더라도 원본에 변화가 그대로 적용됩니다.

let num = 5;
let str = 'string';
let array = [1,2,3,4,5];
let object = {
    a: 'hello',
    b: 'world'
}

const change = function(n, s, arr, obj)
{
    n = 10;
    s = 'change';
    arr[4] = 1;
    obj.a = 'world';
    obj.b = 'hello';
}

console.log(num);
console.log(str);
console.log(array);
console.log(object);
change(num,str,array,object);
console.log(num);
console.log(str);
console.log(array);
console.log(object);

 

위의 그림과 같이 number 타입, string 타입등은 원본 값이 변화하지 않습니다.

하지만 array의 인덱스값, object의 item 값은 변화가 원본에 적용됩니다.

let array = [1,2,3,4,5]

const change = function(array){
    array = [5,4,3,2,1];
}

console.log(array);
change(array);
console.log(array);

단, 위와 같이 참조타입이더라도 값 자체를 바꾸는건 원본에 영향을 주지 않습니다.

 

 

 

 

함수의 오버로딩, 그리고 typeof 연산자

다른 언어에서는 매개변수의 타입에 따른 함수의 오버로딩을 사용하지만

자바스크립트에서는 매개변수의 형이 자유롭기 때문에 오버로딩이 존재하지 않습니다.

다만 타입에 따라 함수의 작동을 다르게 하고 싶다면, typeof 연산자를 이용하여 타입에 따른 처리를 합니다.

function type_function(a,b,c){
    if(typeof(b)==='string'){
        console.log(a+c);
    }
    if(typeof(b) ==='number'){
        console.log(a+b+c);
    }
}

type_function(1,2,3);
type_function(5,'+',3);

실행 결과

typeof 연산자는 해당 변수의 타입을 string으로 반환해주는 연산자입니다.

이를 활용하여 if문으로 분기를 만들어줄 수 있습니다.