ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [TIL]Day 9. Java script 함수에 대하여
    IT 지식 2020. 8. 22. 16:03
    728x90

    1. 함수가 뭐죠?

     

    함수는 대한민국 국민이라면 누구나 한번쯤은 들어본 단어이다. 기초 교육과정인 중등교육 과정에 포함되어 있는 내용이기 때문이다. 

    더보기

    수학에서, 함수(函數, 영어: function) 또는 사상(寫像, 영어: map 또는 mapping)은 첫 번째 집합의 임의의 한 원소를 두 번째 집합의 오직 한 원소에 대응시키는 이항관계다.(출처: 위키백과)

    굉장히 어렵고 무섭게 설명되어 있지만, 함수는 쉽게 말해 내가 넣은 어떤 변수가 일련의 과정을 거쳐 변환되는 과정이라고 생각하면 된다. 

     

    프로그램 언어는 함수를 매개로 수많은 알고리즘과 로직을 실행시킨다. 그 함수를 작동시키는 변수는 사용자의 입력값이라고 생각하면 된다. 그런 의미에서 프로그래밍을 배운다는 것은 함수를 배운다는 말과 유사하다고 볼 수 있다. 개발자라면 각 프로그래밍 언어에서 어떻게 함수가 구현되고 실행되는지를 배워야만 일을 할 수 있다.

     

    이번 포스팅에서는 java script에서 사용하는 함수 표현 방식에 대해 알아보기로 하자.

     

     

    2. 함수 표현 방법

     

    함수를 표현하는 방식에는 크게 두가지가 존재한다.

    • 함수 선언식
    • 함수 표현식

    1) 함수 선언식?

     

    doJavascript();
    
    function doJavascript(){
    	alert("Hello World");
    }

    함수 선언식은 위와 같이 선언하고 싶은 함수의 이름을 정해 선언하고 function 문에서 그 기능을 정의하는 방식을 취하고 있다. 이렇게 한 번 정의한 함수는 함수명을 통해 언제든 사용하고 싶은 부분에 불러올 수 있다.

     

    2) 함수 표현식?

     

    var doJavascript = function(){
    	alert("Hello World");
    }

    함수 표현식은 변수를 먼저 선언한 뒤에 그 변수에 함수를 할당하는 방식으로 진행된다.

    음... 수학적으로 표현을 해보자면, 고차 방정식을 풀 때 어떤 변수나 식을 더 간단한 변수로 치환한 후 푸는 방식이라고 볼 수 있고, 문과적으로 표현하자면, 내가 공부해야할 목차 안에 새로운 목차를 만들어서 더 심층적인 개념을 체계적이고 포괄적으로 공부해나가는 방식이라고 보면 될 것 이다.

     

    3) 그 둘의 차이점은?

     

    간단하게 말하자면 함수 선언식은 호이스팅에 영향을 받지만, 함수 표현식은 호이스팅에 영향을 받지 않는다.

    여기서 새로운 개념이 등장한다. 바로 호이스팅이다.

     

    (1) 호이스팅이 뭐죠?

     

    호이스팅이란, 함수 안에 있는 선언들을 모두 끌어올려 해당 함수 유효 범위의 최상단에 선언하는 것을 말한다.

     

    자바스크립트는 스크립트를 실행하기 전에 코딩된 모든 함수를 훑어본다. 그 중 선언되어 있는 변수나 함수를 기억하고 있다가, 함수가 실행되는 순간에 그 변수와 함수를 최상단으로 불러와 읽고 순차적으로 코드를 읽어나간다. 그 과정에서 변수나 함수가 이동되는 것은 아니고 코드들간에 실행되는 순서만 변경되는 것이라고 생각하면 된다. 

     

    (2) 모든 변수와 함수가 호이스팅 되나요?

     

    함수를 표현하는 방식에는 var, let, const가 존재 한다. 이중에서 var 변수/함수만 호이스팅 되며 나머지는 호이스팅 되지 않는다. 그렇기에 각각의 함수를 사용할 때에는 각별한 주의가 요구된다. 프로그래밍 언어는 위에서부터 아래로 순차적으로 작동되며, 호이스팅이라는 기능에 의해 순서가 바뀌게 될 경우 코드가 작동하지 않거나 버그가 발생할 수 있기 때문이다.

     

    (3) 그러면 var를 쓰는 것은 안좋은 것 아닌가요?

     

    var는 초기 자바스크립트의 변수 선언 방식이며, 자바스크립트가 개선되면서 let 과 const같은 변수 선언 방식이 추가 된 것이다. 그래서 오래된 자바스크립트에는 var가 사용되는 경우가 많다. 하지만 최근에는 let이나 const 같은 변수 선언 방식을 좀 더 많이 사용함으로써 혹시나 발생할지 모를 버그를 줄이는 쪽으로 변화하고 있는 추세이다. 

    즉, var를 알고 있어야 왜 let과 const가 등장하게 되었는지를 알 수 있으며, 보다 많은 내용의 자바스크립트 코딩을 이해할 수 있다.

     

     

    3. 결론

     

    자바스크립트를 활용하기 위해서는 함수를 활용해야 하고, 함수를 잘 활용하기 위해서는 변수와 그 변수 선언 방식이 중요하다. var, let, const는 호이스팅적인 측면 말고도 또 다른 차이점이 있는데 그것은 후의 포스팅에서 다루도록 하겠다. 

     

    다양한 변수 선언 방식을 알고 자유자재로 활용할 수 있는 개발자가 되는 것이 더 멋지고 중요하다고 할 수 있다.

    728x90

    댓글

Designed by Tistory.