분류 전체보기

언어/JavaScript Deepdive

20장 : 실행 컨텍스트

소스코드의 타입ECMAScript 사양은 소스코드를 4가지 타입으로 구분소스코드 타입에 따라 실행 컨텍스트 생성 과정 및 관리 내용이 다르기 때문4가지 타입의 소스코드는 실행 컨텍스트를 생성 소스코드의 타입 설명전역 코드전역에 존재하는 소스코드전역에 정의된 함수, 클래스 등의 내부 코드는 포함X 함수 코드함수 내부에 존재하는 소스코드함수 내부에 중첩된 함수, 클래스등의 내부 코드는 포함X eval 코드(사용X)빌트인 전역 함수인 eval 함수에 인수로 전달되어 실행되는 소스코드모듈 코드모듈 내부에 존재하는 소스코드모듈 내부의 함수, 클래스 등의 내부 코드는 포함X 전역 코드전역 변수를 관리하기 위해 최상위 스코프인 전역 스코프를 생성하여 var키워드로 선언된 전역 변수와 함수 선언문으로 정의된 전역 함수..

언어/JavaScript Deepdive

19장 : this

this 키워드메서드의 경우 자신이 속한 객체를 가리키는 식별자를 참조 필요객체 리터럴 방식으로 생성한 객체의 경우 식별자를 통해 가능생성자 함수 방식으로 인스턴스를 생성하는 경우 인스턴스를 생성하기 전이므로 가리키는 식별자 확인 불가.이러한 상황에서 this라는 특수한 식별자를 통해서 자신이 속한 객체 또는 자신이 생성할 인스턴스를 가리키는 자기 참조 변수를 사용this를 통해 자신이 속한 객체 또는 자신이 생성할 인스턴스의 프로퍼티나 메서드를 참조 가능this 바인딩은 함수 호출 방식에 의해 동적으로 결정(바인딩: 식별자와 값을 연결하는 과정)strict 모드의 일반함수 this는 undefined로 설정 → this가 일반적으로 객체의 메서드 내부 또는 생성자 함수 내부에서만 의미가 있는데, 일반함..

언어/JavaScript Deepdive

18장 : 빌트인 객체

자바스크립트 객체의 분류표준 빌트인 객체: ECMAScript 사양에 정의된 객체이며, 애플레케이션 전역의 공통 기능을 제공한다.호스트 객체: JS실행환경 (브라우저 환경에선 WebApi or Node.js 환경에선 Node.js고유 API)에서 추가로 제공되는 객체사용자 정의 객체: 사용자가 직접 정의한 객체표준 빌트인 객체Object, String, Number, Boolean, Symbol, Date, Math, RegExp, Array, Map/Set, 등등의 표준 빌트인 객체가 존재원시값과 래퍼 객체const str = 'hello';// 원시 타입인 문자열이 프로퍼티와 메서드를 갖고 있는 객체처럼 동작한다.console.log(str.length); // 5console.log(str.toUp..

언어/JavaScript Deepdive

17장 엄격(strict) 모드 = Eslint

strict mode = Eslint x를 선언할 때 키워드를 붙이지 않고 선언 시, 암묵적 전역과 같은 오류를 발생시킬 원인이 되는 일이 발생할 수 있는데, 이 strict mode를 통해 문법을 좀 더 엄격히 적용하여 오류를 발생시킬 가능성이 높거나 자바스크립트 엔진의 최적화 작업에 문제를 일으킬 수 있는 코드에 대해 명시적인 에러를 발생 시킨다. -> Eslint 같은 도구 써도 됨 strict mode의 적용 use strict; 위 키워드로 사용한다. 전역에 strict mode를 적용하는 것은 피하자 외부 서드 파티 라이브러리가 nono-strict mode인 경우도 있어서 전역에 strict mode 적용은 바람직 하지 않다. --> 즉시 실행함수 선두에 strict mode를 적용한다. 함..

언어/JavaScript Deepdive

15장 : 일급 객체

일급 객체 일급 객체의 조건 무명의 리터럴로 생성 가능 = 런타임에 생성 가능 💡 런타임 : 프로그래밍 언어가 구동되는 환경 Web APIs setTimeout, DOM, AJAX 등과 같은 비동기 메소드 이벤트 루프와 콜백 큐 보유 변수나 자료구조(객체, 배열 등)에 저장 가능 함수의 매개변수에 전달 가능 함수의 반환값으로 사용 가능 함수는 일급 객체이면서도 호출 가능한 특성 보유, 고유 프로퍼티 소유 💡 일급 객체 : 사용할 때 다른 요소들과 아무런 차별이 없는 객체 함수 객체의 프로퍼티 함수는 객체이므로 함수또한 프로퍼티를 가질 수 있기 때문에 console.dir, Object.getOwnPropertyDescriptor로 확인 가능 console.dir : JSON과 같은 트리 구조로 출력 하고..

언어/JavaScript Deepdive

14장 : 생성자 함수에 의한 객체 생성

Object 생성자 함수 new 연산자와 함께 호출하여 객체를 생성하는 함수 생성자 함수 = new + function const person = new Object(); 인스턴스(instance) : 이때 생성된 객체 (person이 인스턴스) Object 외에도 String, Number, Boolean 등의 생성자 함수 제공 생성자 함수 객체 생성(빌트인) 생성자 // String 생성자 함수에 의한 String 객체 생성 const strObj = new String('Lee'); console.log(typeof strObj); // object console.log(strObj); // String {"Lee"} // Number 생성자 함수에 의한 Number 객체 생성 const numOb..

언어/JavaScript Deepdive

13장 : 프로퍼티 어트리뷰트

내부 슬롯과 내부 메서드 의사 프로퍼티와 의사 메서드 내부 슬롯 : 모든 객체는 [[Prototype]] 이 슬롯의 경우 __proto__를 통해 간접적으로 접근이 가능 const o = {}; // 내부 슬롯은 자바스크립트 엔진의 내부 로직이므로 직접 접근할 수 없다. o.[[Prototype]] // -> Uncaught SyntaxError: Unexpected token '[' // 단, 일부 내부 슬롯과 내부 메서드에 한하여 간접적으로 접근할 수 있는 수단을 제공하기는 한다. o.__proto__ // -> Object.prototype 프로퍼티 어트리뷰트와 프로퍼티 디스크립터 객체 JS엔진은 프로퍼티를 생성할 때, 프로퍼티의 상태를 나타내는 프로퍼티 어트리뷰트를 기본값으로 자동 정의 프로퍼티 ..

언어/JavaScript Deepdive

12장 : let, const & 블록 스코프

var 키워드 변수 중복 선언 허용 같은 스코프 안에서 변수 중복 선언 가능 --> 먼저 선언된 값 변경되는 부작용 함수 레벨 스코프 함수가 아닌 다른 if, while과 같은 문에서 사용시 함수레벨 스코프만 지원하므로 전역 변수를 남발할 가능성이 높다. 변수 호이스팅 // var 키워드로 선언한 변수는 런타임 이전에 선언 단계와 초기화 단계가 실행된다. // 따라서 변수 선언문 이전에 변수를 참조할 수 있다. console.log(foo); // undefined var foo; console.log(foo); // undefined foo = 1; // 할당문에서 할당 단계가 실행된다. console.log(foo); // 1 가독성을 떨어뜨리고 오류를 발생시킬 여지를 줌 let 키워드 변수 중복 선..

MellowHoney
'분류 전체보기' 카테고리의 글 목록 (9 Page)