목록분류 전체보기 (122)
우당탕탕 개발일기

면접 대비 질문 리스트를 뽑을 때마다 꼬옥 나오는 this.. 봐도봐도 모르겠던 this를 이번 기회에 아주 조져보겠다.01. this란const circle = { radius: 5, getDiameter() { return 2 * circle.radius; }};console.log(circle.getDiameter()); // 10 (ⓐ) getDiameter 메소드 내에서는 메소드 자신이 속해있는 객체 circle을 참조하고 있다.getDiameter 메소드가 호출되는 시점(ⓐ)에는 이미 객체 리터럴의 평가가 완료되어 객체가 생성되었고 circle이라는 식별자에 생성된 객체가 할당된 이후이다. 따라서 getDiameter 메소드 내부에서 circle 식별자를 참조할 수는 있..
보호되어 있는 글입니다.

1. 프로퍼티 어트리뷰트란??프로퍼티의 값(value), 값의 갱신 가능 여부(writable), 열거 가능 여부(enumerable), 재정의 가능 여부(configurable)와 같은 프로퍼티의 상태. 자바스크립트 엔진은 프로퍼티를 생성할 때 이 프로퍼티 어트리뷰트를 기본값으로 자동 정의한다. 1) Object.getOwnPropertyDescriptor인수로 참조와 프로퍼티 키 값을 넘겨주면 해당 프로퍼티(1개)의 프로퍼티 어트리뷰트를 프로퍼티 디스크립터 객체로 반환한다.트프로퍼티 어트리뷰트에 직접 접근할 순 없지만, Object.getOwnPropertyDescriptor메소드를 통해 간접적으로 접근이 가능하다. 단, ES8부터 도입된 Object.getOwnPropertyDescriptors ..

1. 전역 변수의 문제점1) 암묵적 결합전역 변수를 선언하는 것은 코드 어디서든 참조하고 할당할 수 있는 변수를 사용하겠다는 의미와 동일하다.이는 모든 코드가 전역 변수를 참조하고 변경할 수 있는 암묵적 결합을 허용하는 것이다.이렇게 변수의 유효범위가 크면 클수록 코드의 가독성이 나빠지고 의도하지 않은 변경이 일어날 위험이 증가한다. 2) 긴 생명주기전역 변수의 생명주기는 애플리케이션의 생명 주기와 동일하다.즉, 코드가 로드 되자마자 곧바로 해석되고 실행되며 더 이상 실행할 코드문이 없을 때 종료한다. 전역 변수는 생명 주기가 애플리케이션의 생명 주기와 동일한 만큼 메모리 리소스도 오랜 기간 소비한다.그만큼 전역 변수의 상태를 변경할 수 있는 시간도 길고 기회도 많아지는 것이다. 3) 스코프 체인 상 ..

1. 스코프란?모든 식별자(변수명, 함수명, 클래스명 등)의 유효범위 즉, 다른 코드가 식별자 자신을 참조할 수 있는 유효범위.모든 식별자는 자신이 선언된 위치에 의해 자신이 유효한 범위가 결정된다.let x = '반원재'; // ⓐfunction foo() { let x = '이규리'; // ⓑ console.log(x);}foo(); // 이규리console.log(x); // 반원재위의 코드처럼 동일한 변수가 다른 곳에서 선언되었을 경우, foo() 안의 x와 console.log(x)에서의 x가 무엇을 참조할 지는 자바스크립트 엔진이 결정하게 되는데, 이를 식별자 결정이라고 한다. 위의 코드는 코드의 가장 바깥 영역에서 선언된 x변수(ⓐ)는 어디서든 참조할 수 있다.(전역 스코프)하지만..