2025. 1. 20. 16:59ㆍ카테고리 없음
14장 전역 변수의 문제점
변수의 생명 주기
지역변수의 생명주기는 함수의 생명 주기와 일치.
전역변수의 생명주기는 전역객체의 생주기와 일치
전역 변수 문제점
암묵적결합 : 어디서든 전역을 참조, 변경 가능
긴 생명 주기 : 전역 변수는 생명주기가 길다
스코프 체인 상 종점에 존재 : 전역 변수의 검색 속도가 가장 느리다.
네임스페이스 오염 : 파일이 분리되어 있어도 하나의 전역 스코프를 공유한다는 것.
다른 파일에 동일한 이름 명명 전역 변수 및 전역 함수가 같은 스코프내에 존재할 경우 예상치 못한 결과
전역 변수의 사용을 억제하는 방법
즉시 실행함수/ 네임스페이스 객체/모듈 패턴(클로저(캡슐화))/ES6 모듈
15장 let, const 키워드와 블록 레벨 스코프
var : 전역(함수내에선 블록 레벨), 호이스팅 undefined로 초기화후 런타임시 값 할당, 변수 중복 선언 가능
let,const :블록 레벨(지역적), 호이스팅 tdz에 빠져서 참조에러 뜨고, 런타임시 초기화로 값 할당, 변수 중복 선언 x
const : 변수 재할당 금지,객체의 경우 변경 가능.
되도록 let 보단 const를 사용하는 게 좋음 .
16장 프로퍼티 어트리뷰트
자바스크립트 엔진의 구현 알고리즘 설명하기 위해. 내부 슬롯, 내부 메서드
공개적 접근 x // , __proto__ 통해 간접접근.
프로퍼티 어트리뷰트 [[Value]], [[Writable]], [[Enumerable]], [[Configurable]]
object.getOwnProppertyDescriptor로 간접 확인 가능
프로퍼티 데이터//접근자 두개로 구분.
데이터 프로퍼티 : [[Value]], [[Writable]], [[Enumerable]], [[Configurable]]
접근자 프로퍼티 : [[get]], [[set]], [[Enumerable]], [[Configurable]]
프로퍼티 정의
object.defineProperty 메서드로 프로퍼티 어트리뷰트를 정의 할 수 있음
설정시 생략하면, 기본값으로 false값이 됨.
객체 변경 방지
객체 확장 금지 object.preventExtenstions
객체 밀봉 : object.seal
객체 동결 : object.freeze <- 재귀로 깊은 복사 가능.
17장 생성자 함수에 의한 객체 생성
객체 리터러에 의한 객체 생성방식은 단 하나만의 객체를 생성,
-> 생성자 함수는 프로퍼티 구조가 동일한 객체를 여러개 간편 생성
functuin Object ( ) { }
const person = new Object ( )
new가 있어야 인스턴스(객체)를 생성하고, 이 객체는 object 함수의 내부의 this가 바인딩 됨.
new가 없으면 그냥 함수임.
그냥 함수의 경우 내부 메서드 call를 호출
new 와 함께 올 경우 내부 메서드 constructor를 호출
new 와 함께 생성자 함수로 호출 되면 new.target은 함수자신(여기선 object)
constructor가 올 수 없는 함수는
축약함수, 화살표 함수