일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- programmers
- 리트코드
- 프로그래머스
- 파이썬
- 4주 프로젝트
- 타임어택
- 리액트
- 손에 익히며 배우는 네트워크 첫걸음
- til
- 리덕스
- 렛츠기릿 자바스크립트
- javascript
- 코드스테이츠
- HTTP
- 타입스크립트 올인원
- 알고리즘
- 코어 자바스크립트
- codestates
- 타입스크립트
- python
- 자바스크립트
- 2주 프로젝트
- LeetCode
- 회고
- SQL 고득점 Kit
- 백준
- 제로초
- 정재남
- js
- 토익
- Today
- Total
목록호이스팅 (4)
Jerry

"자바스크립트를 사용하다 보면 변수와 함수가 예상과 다르게 동작하는 경우를 본 적이 있을 겁니다.예를 들어 변수 선언 전에 console.log(a);를 호출했을 때 오류가 발생하지 않고 undefined가 출력되는 걸 본 적이 있나요?이런 현상이 발생하는 이유는 바로 호이스팅 때문입니다." 오늘은 자바스크립트의 핵심 개념인 호이스팅과 전역 컨텍스트, 클로저에 대해 알아보는 시간을 가지겠습니다. 1. 도입: 왜 중요한 개념인가?JavaScript에서 호이스팅, 전역 컨텍스트, 클로저는 함수 및 변수의 동작을 이해하는 데 핵심적인 개념이다. - 코드 실행 순서 파악- 스코프 관리- 메모리 효율 향상 과 같이 중요한 역할을 한다.이를 잘 활용하면 버그를 줄이고 유지 보수성을 높일 수 있다. 2. 개..

let과 const 호이스팅 + TDZ(Temporal Dead Zone) let과 const로 선언한 변수도 호이스팅 대상이다. 호이스팅 시 let은 undefined로 변수 초기화 하지 않음 이 상태에서 선언한 let 키워드 호출 ⇒ 예외 발생 (에러) | 에러 발생 이유: 일시적 사각지대(TDZ: Temporal Dead Zone) 변수 스코프의 맨 위에서 변수의 초기화 완료 시점까지의 변수는 "일시적 사각지대"(Temporal Dead Zone, TDZ)에 들어간 변수라고 표현 TDZ인 이유는 사각지대가 코드의 작성 순서(위치)가 아니라 코드의 실행 순서에 의해 형성되기 때문 // TDZ Example function do_something() { console.log(bar); // undefi..

var 키워드 Scope of var : var 키워드의 범위 범위는 기본적으로 변수를 사용할 수 있는 위치 의미 var 선언은 전역 범위 혹은 함수 범위로 지정 var 변수가 함수 외부 선언 => 범위는 전역 (전체 윈도우 상) var 변수가 함수 내부 선언 => 범위는 함수 블록 내부 var hello = 'a'; function person() { var world = 'b'; } console.log(world); // world is not defined console.log(hello); // hello var의 호이스팅 호이스팅이란 변수와 함수 선언이 맨 위로 이동되는 자바스크립트 매커니즘 = 인터프리터가 변수와 함수의 메모리 공간을 선언 전에 미리 할당하는 것 console.log (gre..

var 호이스팅 인터프리터가 변수와 함수의 메모리 공간을 선언 전에 미리 할당하는 것 var 로 선언한 변수의 경우 호이스팅 시 undefined로 변수 초기화 var 키워드로 선언된 변수는 선언 단계와 초기화 단계가 한번에 이뤄진다 let과 const로 선언한 변수의 경우 호이스팅 시 초기화하지 않음 변수의 선언과 초기화를 분리한 후, 선언만 코드의 최상단으로 옮기는 것 변수 정의 코드보다 사용 코드가 앞서 등장할 수 있음 함수 선언도 위와 동일 // #1 Case function catName(name) { console.log("제 고양이의 이름은 " + name + "입니다"); } catName("호랑이"); /* 결과: "제 고양이의 이름은 호랑이입니다" */ // #2 Case catName..