아래 오류는

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

아래처럼 정의한다.

항상 정의되어 있게 하려고 수정한거라고 보면 됨
- 함수 선언은 호이스팅되므로 정의하기 전에 호출할 수 있습니다.
- 함수 표현식은 변수의 초기화와 함께 처리되므로, 정의하기 전에 호출할 수 없습니다.
- 함수 선언은 명명된 함수로, 함수 이름이 항상 정의됩니다.
- 함수 표현식은 익명 함수로, 변수에 할당됩니다.
더보기
JavaScript에서 const로 함수 표현식을 지정하는 것과 function 선언을 사용하는 것에는 몇 가지 중요한 차이가 있습니다.
함수 선언 (Function Declaration)
javascript
코드 복사
function positionButtons() { // 함수 본문 }
특징:
- 호이스팅 (Hoisting):
- 함수 선언은 코드가 실행되기 전에 호이스팅됩니다. 즉, 함수 선언문은 함수가 정의되기 전에 호출할 수 있습니다.
javascript코드 복사hoistedFunction(); // 실행 가능 function hoistedFunction() { console.log("This function is hoisted!"); } - 명명된 함수:
- 함수 이름이 명확하게 정의되어 있으며, 디버깅 시 스택 트레이스에 함수 이름이 표시됩니다.
함수 표현식 (Function Expression)
javascript
코드 복사
const positionButtons = function() { // 함수 본문 };
혹은 화살표 함수로 정의:
javascript
코드 복사
const positionButtons = () => { // 함수 본문 };
특징:
- 호이스팅되지 않음:
- 함수 표현식은 변수의 초기화와 함께 처리되므로, 정의하기 전에 호출할 수 없습니다.
javascript코드 복사hoistedFunction(); // ReferenceError: Cannot access 'hoistedFunction' before initialization const hoistedFunction = function() { console.log("This function is not hoisted!"); }; - 익명 함수:
- 함수가 익명일 수 있으며, 변수에 할당됩니다. 디버깅 시 스택 트레이스에 함수 이름이 표시되지 않을 수 있습니다 (변수 이름만 표시).
차이점 요약
- 호이스팅:
- 함수 선언은 호이스팅되므로 정의하기 전에 호출할 수 있습니다.
- 함수 표현식은 변수의 초기화와 함께 처리되므로, 정의하기 전에 호출할 수 없습니다.
- 함수의 이름:
- 함수 선언은 명명된 함수로, 함수 이름이 항상 정의됩니다.
- 함수 표현식은 익명 함수로, 변수에 할당됩니다.
'개인공부' 카테고리의 다른 글
| [spring]@Controller와 @RestController의 차이 (0) | 2024.07.17 |
|---|---|
| [vuetify]grid (0) | 2024.07.09 |
| [Vue3.js] 새로운 프로젝트 생성, vite 설치까지 (2) | 2024.06.02 |
| [clickEvent] 버블링현상, event 객체 사용 이유 (2) | 2024.05.20 |
| [Vue.js] 동적 클래스 바인딩 (1) | 2024.05.20 |