본문 바로가기

Front-End/모던 자바스크립트 Deep Dive

(5)
[모던 자바스크립트 Deep Dive] 16장 프로퍼티 어트리뷰트 16.1 내부 슬롯(Internal Slot)과 내부 메서드(Internal Method)내부 슬롯과 내부 메서드: 자바 스크립트 엔진의 구현알고리즘을 설명하기 위해 EMCAScript 사양에서 사용하는 의사 프로퍼티와 의사 메서드. ([[…]] 이중 대괄호로 감싸진 이름들): 자바스크립트 엔진의 내부 로직이므로 원칙적으로 직접 접근하거나 호출할 수 있는 방법을 제공하지 않음. 하지만 일부에 한해 간접적으로 접근할 수 있는 수단을 제공하기는 한다. e.g) ‘[[Prototype]]’ → ‘proto’로 간접 접근 가능 16.2 프로퍼티 어트리뷰트(Property Attributes)와 프로퍼티 디스크립터(Property Descriptor) 객체프로퍼티 어프리뷰트는 객체가 가지는 내부적 특성, 프로퍼티..
[모던 자바스크립트 Deep Dive] 15장 let, const 키워드와 블록 레벨 스코프 var 키워드의 문제점 : ES5까지 변수를 선언할 수 있는 유일한 방법은 var 키워드를 쓰는 것이었다고 한다. var 키워드는 다른 언어와 구별되는 독특한 특징이 있으므로 주의해서 사용해야 한다. 중복 선언 허용 : var 키워드로 선언된 변수는 같은 스코프 내에서 중복 선언이 된다. 중복 선언 시에 초기화문이 있으면 var 키워드가 없는 것 처럼 동작하고, 초기화문이 없으면 무시된다. var x = 1; var y = 1; var x = 100; // x = 100; var y; // 무시 console.log(x); // 100 console.log(y); // 1 → 이 특징때문에 변수를 중복 선언하면서 값을 할당하는 경우, 의도치 않게 먼저 선언된 변수 값이 변경되는 부작용이 발생할 수 있다...
[모던 자바스크립트 Deep Dive] 13장 스코프 한 주에 최소 한 장! 밀리지 말자… 13장 레츠 고 스코프란? : 식별자(변수 이름, 함수 이름, 클래스 이름 등)이 유효한 범위. 다른 코드가 식별자 자신을 참조할 수 있는 유효 범위. : 변수는 자신이 선언된 위치에 의해 스코프가 결정된다. 스코프의 종류 전역 : 코드의 가장 바깥 영역을 전역이라고 하고, 전역에서 변수를 선언하면 전역 스코프를 갖는 전역 변수가 된다. 코드 어디서든지 참조할 수 있다. 지역 : 함수 몸체 내부를 말한다. 지역에서 선언된 지역 변수는 자신의 지역 스코프와 하위 스코프에서 유효하다. inner 함수 안에 변수 x를 선언하고 전역에도 이름이 같은 변수 x가 존재할 때 inner함수 안에서 x를 참조하면 inner에서 선언된 지역변수 x를 참조하게 된다. 자바스크립트 엔진..
[모던 자바스크립트 Deep Dive] 11장 원시 값과 객체의 비교 12장을 먼저 읽긴 했지만 보다 보니 내가 자바스크립트의 원시 값, 객체 타입에 대해서도 잘 모르는 것 같아 다시 11장으로 돌아오게 됐다. ㅎㅎ 자바스크립트가 제공하는 데이터 7가지(number, string, boolean, null, undefined, symbol, object) 타입은 크게 원시타입, 객체타입으로 구분한다. 원시 타입과 객체 타입의 차이 원시 타입의 값은 변경 불가능한 값이고, 객체 타입의 값은 변경 가능한 값이다. 원시 값을 변수에 할당하면 변수에는 실제 값이 저장되고, 객체를 변수에 할당하면 변수에는 참조 값이 저장된다. 값에 의한 전달 - 원시 값을 갖는 변수를 다른 변수에 할당하면 원본의 원시 값이 복사되어 전달 / 참조에 의한 전달 - 객체를 가리키는 변수를 다른 변수에..
[모던 자바스크립트 Deep Dive] 12장 함수 한 학기 목표를 “매주 를 읽고 공부해서 기록하기” 로 정해 보았다. 앞서 9장까지 천천히 읽긴 했지만, 사실 궁금한 부분을 먼저 찾아서 읽는 게 더 공부가 잘되니까! 목차를 쭉 읽어보며 11장 객체를 볼까 하다가 “12.7 다양한 함수의 형태”에 끌려 12장을 보기로 결정했다. 먼저 함수의… 개념 : 재료를 투입받아 제품을 생산하는 기계와 같은 것 : 일련의 과정을 statement로 구현하고 코드블록으로 감싸서 하나의 실행 단위로 정의한 것 : 함수 호출 시 받는 입력을 인수, 함수에서 입력을 전달받는 변수를 매개변수, 출력은 반환 값 솔직히 이렇게만 보면 이미 아는 개념인데.. 뒤에 내용이 뭐가 이렇게 많은거지? 계속 읽어보자… 왜 함수를 사용하는가? : 코드의 재사용성 - 몇 번이든 호출 가능하다..