[giruboy]Javascript 함수와 스코프 더 이해하기

최길우·2022년 11월 6일

JavaScript

목록 보기
1/2

간단히 예제를 통한 함수와 스코프 더 잘 이해하기

Q. 다음 중 에러가 발생하는 코드는?

// 1번
{
  function sayHi() {
    console.log('Hi!');
  }
}

sayHi();

-> 해당 코드는 함수 선언 방식이다. 함수 선언 방식은 함수 스코프를 가지기 때문에 코드블록 안에서 함수를 선언하더라도 코드 블록 밖에서 함수를 호출하여도 아무 문제없다.

// 2번
{
  let sayHi = function () {
    console.log('Hi!');
  };
}

sayHi();

-> 코드 블록 안에서 함수 표현식 방식을 사용. 여기서 let 키워드 변수를 활용했기 때문에 블록 스코프를 가지므로 코드블록 밖에서 호출한 sayHi 함수는 사용 할 수 없다. 에러발생!

// 3번
sayHi();

function sayHi() {
  console.log('Hi!');
}

-> 함수 선언 방식이고, 함수 선언문은 호이스팅이 되기 때문에 함수 선언 이전에 호출해도 코드가 정상적으로 동작한다.

// 4번
const sayHi = function() {
  console.log('Hi!');
};

sayHi();

-> 함수 표현식 사용. 함수 선언 후 호출했으니 아무 문제 없이 코드가 잘 동작함

profile
성장하는 개발자

0개의 댓글