Day15 : 함수 선언의 종류

2023. 11. 27. 14:55Language/JavaScript

함수 표현식

: 변수에 함수를 할당하는 방식

1
2
3
4
const sum = function() {
 
    let result = 10+10;
}
cs

 

함수선언문

: function을 먼저 적고 이 뒤에 함수의 이름이 적힌다.

1
2
3
4
function sum() {
 
    let result = 10+10;
}
cs

 

차이점

  • 선언키워드 : 표현식 O / 선언문 X
  • 호이스팅의 영향 : 표현식 X / 선언문 O

호이스팅

:위로 끌어올려지는 것

JS는 위에서부터 한줄씩 코드를 읽어내려온다.

브라우저가 자바스크립트를 해석하는 과정에서 선언문으로 작성된 함수는 원래 선언된 위치가 아니라 위쪽으로 끌어올려지게 된다.

 

1
2
3
4
5
6
sum()
 
function sum() {
 
    let result = 10+10;
}
cs

선언문이 호출보다 아래 있다해도

 

1
2
3
4
5
6
function sum() {
 
    let result = 10+10;
}
 
sum()
cs

선언문이 호이스팅되어 에러가 나지 않지만 

 

1
2
3
4
5
6
sum()
 
const sum = function() {
 
    let result = 10+10;
}
cs

표현식에서 호출이 우선된다면 표현식은 호이스팅되지 않기때문에

js에서는 sum()이란 함수를 알지 못하므로 에러가 발생한다.

 

화살표 함수

: function이라는 문자가 빠지고 => 가 들어간다.

  메서드 내에 함수를 써야 하는 경우에 많이 사용된다.

1
2
3
4
const sum = () => {
 
    let result = 10+10;
}
cs