월루를 꿈꾸는 대학생

Deep dive 14장 15장 본문

Programing/JS

Deep dive 14장 15장

하즈시 2022. 2. 22. 15:13
728x90

14 전역 변수의 문제점 

 

지역변수는 해당 스코프 안에서만 생성되고 함수가 종료되면 소멸

전역 변수 선언문의 경우 어디에 있든 가장 먼저 실행됨 

지역 변수는 함수 호출과 종료에 따라 그대로 따라감

 

호이스팅 

- 변수 선언이 스코프으이 선두로 끌어 올려진 것처럼 동작하는 특징

 

 

전역 변수 생명 주기

- 명시적인 호출 없읻도 자동 실행 : 로드되자마자 실행 

- var 키워드로 선언한 전역변수 생명중기는 전역 객체의 생명주기와 일치 

 

전역 변수 문제점

 

1) 암묵적 결합

- 모든 코드가 전역변수를 참조하고 변경 가능 

- 가독성이 나빠지고 의도치 않게 값 변경 될 위험성 높음 

 

2) 긴 생명주기

- 메모리 리소스 차지

 

3) 스코프 체인 상에서 종점 존재

- 검색 속도가 가장 느리다 

 

4) 네임스페이스 오염

- 파일이 분리되어 있어도 하나의 전역 스코프를 공유하기에 다른 파일 내 동일한 이름의 변수가 있다면 결과를 예상 못함

 

전역 변수 사용 억제 방법

- 전역변수를 꼭 사용하는 게 아니라면 지역변수 사용하자 = 변수의 스코프는 좁을수록 좋음 

 

1) 즉시 실행함수

- 단 한번만 호출되기에 모든 변수가 지역변수가 됨 

 

2) 네임스페이스 객체

- 전역 변수처럼 사용하고 싶은 변수를 프로퍼티로 추가함 

var MYAPP={};
MYAPP.name = "lee";

 

3) 모둘 패턴

- 관련있는 변수와 함수를 모아 즉시 실행함수로 만들어 모듈화함

- 정보 은닉의 기능 

 

 

15장 let, const 블록 레벨 스코프 

 

var키워드 문제점 

- 변수 중복 선언 허용 

- 함수 레벨 스코프에서 중복이 일어남 밖에 전역변수 x가 있고 함수 내에 지역변수 x가 있어도 모두 전역변수로 취급 값 변경 

- 변수 호이스팅으로 인한 에러 발생 

 

let 키워드 

- 변수의 중복 허용 x

 - 블록 레벨 스코프 : 블록을 모두 지역 스코프로 인정 

 

- 선언단계와 초기화 단계가 분리되어 실행 

- 초기화 전에 변수 접근시 참조에러 발생 = 일시적 사각지대 

 

const 키워드 

- 상수 선언용

- 선언과 동시에 반드시 초기화 필요 '

- 재활동 금지

 

상수

-원시값 할당시 변경 불가

- 재할당이 금지된 변수 

- 상태 유지와 가독성, 유지보수 편의를 위해 사용 '

 

Const 키워드 객체

- const 키워드로 선언된 변수에 객체를 할당한 값 변경 가능

- 재할당이 금지 / 변경은 가능 

 

변수 선언은 const 쓰고 let은 재할당 필요할 때 사용 

 

 

 

 

 

 

728x90

'Programing > JS' 카테고리의 다른 글

자바스크립트 DeepDive CH11  (0) 2022.02.08