Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 코딩
- CPU
- 코딩 자율학습
- css필수 속성
- 이벤트버블링
- https://api.jquery.com/
- 코딩자율학습
- html 필수태그
- 브라우저 렌더링 원리
- 자바스크립트
- css박스 모델
- 메모리와 캐시 메모리
- CSS
- Git
- JS
- do it! html+css+자바스크립트 웹 표준의 정석
- do it! 한권으로 끝내는 웹 기본 교과서 html+css+자바스크립트 웹 표준의 정석
- JavaScript
- 혼자 공부하는 컴퓨터구조+운영체제
- 이벤트
- 비대칭키 암호화
- css배경
- HTML
- propschildren
- 코딩 자율학습 html + css + 자바스크립트
- Do it
- TS
- 코딩 자율학습 html + css + 자바스크립트]
- cpu 성능 향상 기법
- react
Archives
- Today
- Total
게으른 나에게
[JavaScript] - 호이스팅 본문
호이스팅
호이스팅(Hoisting)은 JavaScript에서 변수와 함수 선언문이 코드 실행 전에 해당 스코프의 최상단으로 끌어올려지는 것처럼 동작하는 현상을 의미
var 키워드
- 선언 단계가 호이스팅되어 스코프의 최상단으로 이동
- 초기화는 호이스팅되지 않음, 선언 전에 해당 변수에 접근하면 undefined 값을 반환
console.log(a); // 출력: undefined
var a = 5;
console.log(a); // 출력: 5
→ 코드 내부적 해석
var a;
console.log(a); // 출력: undefined
a = 5;
console.log(a); // 출력: 5
let 및 const 키워드
- 호이스팅되지만, 초기화 전에 해당 변수에 접근하면 ReferenceError가 발생
- 이는 “Temporal Dead Zone”(TDZ) 때문
console.log(b); // ReferenceError: Cannot access 'b' before initialization
let b = 10;
함수 호이스팅
함수 선언문
- 선언과 정의 모두 호이스팅되므로, 함수를 선언 전에 호출 가능
greet(); // 출력: 안녕하세요!
function greet() {
console.log('안녕하세요!');
}
함수 표현식
- 변수의 초기화가 호이스팅되지 않으므로, 선언 전에 호출하면 TypeError가 발생
greet(); // TypeError: greet is not a function
var greet = function() {
console.log('안녕하세요!');
};
→ 코드 내부적 해석
var greet;
greet(); // TypeError: greet is not a function
greet = function() {
console.log('안녕하세요!');
};
클래스 호이스팅
- 호이스팅되지만, 초기화 전에 접근하면 ReferenceError가 발생
const obj = new MyClass(); // ReferenceError: Cannot access 'MyClass' before initialization
class MyClass {
constructor() {
console.log('클래스 생성자 호출');
}
}
'My Study > JavaScript' 카테고리의 다른 글
[JavaScript] - this 용법 (0) | 2025.04.07 |
---|---|
[JavaScript] - 클로저(Closure) (0) | 2025.04.07 |
[JavaScript] - 함수 표현식 vs 함수 선언문 (0) | 2025.01.12 |
[JavaScript] - 형변환 (1) | 2025.01.10 |
[JavaScript] - 상수 (1) | 2024.11.08 |