Javascript/etc

[ Javascript ] - 함수선언식과 함수표현식

algml0703 2022. 9. 19. 09:36
반응형

함수표현식

const 변수명 = () => { }
const 변수명 = function ( ) { }

아래와 같이 함수를 변수에 할당하는 방식이다. 함수가 선언되고 그 이후 즉 아래에 구현되는 코드에서만 해당 함수를 사용 가능하다. 

- return을 생략한 화살표 함수
- 객체를 반환하는 경후에는 ( )안에 넣어 이와 같은 형식으로 ({}) 작성해주어야 한다. 자바스크립트는 단순 {}는 함수의 바디라고 생각해서 해당 바디안에 return을 작성하지 않는 이상 반환하지 않고, 단순 계산에 그치게된다.
- 함수가 선언되기 이전에 해당 함수를 사용하려 하면 아래와 같은 에러메시지가 발생한다.


함수선언식

function 함수명 ( ) { }

아래와 같은 형식으로 함수 생성하는 것을 의미하며, 함수가 선언되기 이전에 선언된 함수의 코드 위에서도 해당 함수를 사용할 수 있다. 즉 함수의 위치에 상관없이 어디서나 호출 가능한다. 이는 자바스크립트 내부 엔진에서 스크립트를 실행하기 전에 함수선언문을 찾아 생성한 후 실행하기 때문이다. ( 함수표현식은 실행시에 해당 함수표현문 코드에 도달해서야 함수가 생성된다. )

 

즉 함수표현식은 호이스팅의 영향을 받지않아 함수 선언 후 그 아래의 코드에서만 호출이 가능하며, 함수선언식은 호이스팅의 영향을 받아 함수 선언 위치에 상관없이 함수 호출이 가능한다.

반응형