Blue Chicken - The Legend Of Zelda
본문 바로가기

개인공부

const 정의 못찾아서 function으로 변경

아래 오류는 

아래 코드에서 나고 있었는데 이 함수를 

아래처럼 정의한다.

항상 정의되어 있게 하려고 수정한거라고 보면 됨

  • 함수 선언은 호이스팅되므로 정의하기 전에 호출할 수 있습니다.
  • 함수 표현식은 변수의 초기화와 함께 처리되므로, 정의하기 전에 호출할 수 없습니다.
  • 함수 선언은 명명된 함수로, 함수 이름이 항상 정의됩니다.
  • 함수 표현식은 익명 함수로, 변수에 할당됩니다.
더보기

JavaScript에서 const로 함수 표현식을 지정하는 것과 function 선언을 사용하는 것에는 몇 가지 중요한 차이가 있습니다.

함수 선언 (Function Declaration)

javascript
코드 복사
function positionButtons() { // 함수 본문 }

특징:

  1. 호이스팅 (Hoisting):
    • 함수 선언은 코드가 실행되기 전에 호이스팅됩니다. 즉, 함수 선언문은 함수가 정의되기 전에 호출할 수 있습니다.
    javascript
    코드 복사
    hoistedFunction(); // 실행 가능 function hoistedFunction() { console.log("This function is hoisted!"); }
  2. 명명된 함수:
    • 함수 이름이 명확하게 정의되어 있으며, 디버깅 시 스택 트레이스에 함수 이름이 표시됩니다.

함수 표현식 (Function Expression)

javascript
코드 복사
const positionButtons = function() { // 함수 본문 };

혹은 화살표 함수로 정의:

javascript
코드 복사
const positionButtons = () => { // 함수 본문 };

특징:

  1. 호이스팅되지 않음:
    • 함수 표현식은 변수의 초기화와 함께 처리되므로, 정의하기 전에 호출할 수 없습니다.
    javascript
    코드 복사
    hoistedFunction(); // ReferenceError: Cannot access 'hoistedFunction' before initialization const hoistedFunction = function() { console.log("This function is not hoisted!"); };
  2. 익명 함수:
    • 함수가 익명일 수 있으며, 변수에 할당됩니다. 디버깅 시 스택 트레이스에 함수 이름이 표시되지 않을 수 있습니다 (변수 이름만 표시).

차이점 요약

  1. 호이스팅:
    • 함수 선언은 호이스팅되므로 정의하기 전에 호출할 수 있습니다.
    • 함수 표현식은 변수의 초기화와 함께 처리되므로, 정의하기 전에 호출할 수 없습니다.
  2. 함수의 이름:
    • 함수 선언은 명명된 함수로, 함수 이름이 항상 정의됩니다.
    • 함수 표현식은 익명 함수로, 변수에 할당됩니다.