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
- primitive type
- CSS
- 백준
- 코드스테이츠
- 페이지네이션
- Native select
- 이벤트 루프
- JavaScript Deep Dive
- 배열
- MUI
- input class
- kakao map api
- nodejs
- 재귀함수
- Node js
- 코딩테스트
- javascript
- OSI 7계층
- 유데미
- react js
- 프론트엔드
- 자료구조
- next/Image
- 백준 nodeJS
- sort
- 알고리즘
- 코드스테이츠 메인프로젝트
- 자바스크립트
- 버블정렬
- 정규표현식
Archives
- Today
- Total
신입 개발자에서 시니어 개발자가 되기까지
[Javascript Deep Dive] 15장 let, const 본문
1. Var와 let의 차이
a. 이제서야 선언단계 / 초기화 단계를 이해했다.
- Var는 자바스크립트 엔진에 의해 코드가 실행되기 이전(런타임 이전)에 이미 선언단계와 초기화단계를 완료한다. 초기화 단계는 선언된 변수에 undefined를 할당하는 것이다.b. 이에 반해 let은 변수 선언과 초기화 단계를 동시에 진행하지 않는다.
- 런타임 이전에 변수의 선언은 암묵적으로 진행하지만, 초기화 단계는 런타임 시점에 변수 선언문에 도달 했을 때 실행한다.c. var의 재선언은 에러가 나지 않지만, let의 재선언은 에러가 난다.
- d. const, let : 블록레벨 스코프 / var : 함수레벨 스코프
|
var | let | const |
scope(유효범위) | 함수레벨 | 블록레벨, 함수레벨 | 좌동 |
변수 선언과 초기화 단계 | 함께 진행 | 분리 | 분리 |
재선언 | 가능 | 불가 | 불가 |
호이스팅 | o | x | x |
2. Hoisting
- Var는 호이스팅이 되고, let은 호이스팅이 안되는 것처럼 동작한다. 안되는 것처럼 동작한다는 의미는 무엇일까
- 자바스크립트는 ES6에서 도입된 모든 선언을 호이스팅한다. 다만 let, const, class 선언문은 호이스팅이 발생하지 않는 것처럼 동작한다.
3. 전역 변수의 문제점
a. 긴 생명주기
i. 전역객체와 생명주기가 동일하기 때문에 메모리 낭비가 될 수 있다.
b. 스코프 체인의 종점에 위치
i. 변수를 검색할 때 지역스코프 -> 전역 스코프 순으로 검색하기 때문에 속도가 느릴 수 있다.
c. 네임스페이스 오염
i. 다른 파일이라 하더라도, 전역객체를 공유하기 때문에 동일한 이름으로 선언된 변수나 함수가 존재할 수 있다.
4. Const 와 객체
- Const는 재할당을 금지할 뿐 불변을 의미하지는 않는다. 원시값은 변경 불가능하지만 객체의 값은 변경 가능하다.
'책읽기 > Javascript Deep Dive' 카테고리의 다른 글
[Javascript Deep Dive] 42장 이벤트 루프 (2) | 2022.11.02 |
---|---|
[Javascript Deep Dive] 22장 this(호출 방식에 따른 this 바인딩) (2) | 2022.10.27 |
[Javascript Deep Dive] 24장 클로저 (1) | 2022.10.03 |
[Javascript Deep Dive] 13장 스코프 (0) | 2022.10.03 |
[Javascript Deep Dive] 10장 객체 리터럴 (0) | 2022.10.03 |