본문 바로가기
JavaScript

JavaScript기초(17)_함수(3)

by DeBanker.K 2021. 10. 11.

1. 선언적 function과 익명 함수의 변수에 할당하는 표현방식의 차이

 

우선 아래의 코드를 살펴보자. 함수 호출을 먼저 하고 뒤에 선언적 function을 입력했다.

hello();

function hello(){
    console.log('hello!');
}
[Running] 
hello!

선언을 뒤에 하고 호출을 먼저하더라도 함수 결과 값이 정상적으로 함수 호출이 된다.

 

그렇다면 변수에 함수를 할당한 경우는 어떤지 살펴보자.

hello();

var hello = function (){
    console.log('hello!');
};
[Running] 
hello();
^
TypeError: hello is not a function

에러 메시지를 통해서, 먼저 호출한 hello를 함수로 인식하지 못함을 알 수 있다.

 

console.log(hello);

var hello = function (){
    console.log('hello!');
};
[Running]
undefined

호이스팅의 원리에 의해서 변수로 선언된 hello는 undefined로 출력된다.

 

hello();

const hello = function(){
    console.log('hello!');
};
[Running] 
hello();
^
ReferenceError: Cannot access 'hello' before initialization

var로 선언했을 때와는 다르게 const로 선언했을 때의 에러 양상이 다르다.

const 같은 경우에는 아예 undefined로도 인식하지 못하고 초기화가 자체가 안되어있다는 에러가 나타난다.

 

위와 같은 코드들에서 하나의 결론을 도출할 수 있다.

선언적으로 function을 나타낸 경우에는 자바스크립트에서 메모리에 올려서 호출할 수 있도록 한다는 것을 알 수 있다.

 

'JavaScript' 카테고리의 다른 글

JavaScript기초(19)_함수(5)  (0) 2021.10.13
JavaScript기초(18)_함수(4)  (0) 2021.10.12
JavaScript기초(16)_함수(2)  (0) 2021.10.10
JavaScript기초(15)_함수(1)  (0) 2021.10.09
JavaScrip기초(14)_반복문(2)  (0) 2021.10.07

댓글