Read

19장을 읽으며 얻은 인사이트를 추가로 공부하면서 정리해 보자. 19장: 프로토타입 자바스크립트는 명령형, 함수형, 프로토타입 기반 객체지향 프로그래밍을 지원하는 멀티 패러다임 프로그래밍 언어다. 클래스 class ES6에서 class가 도입되었다. 클래스도 함수이고, 기존 프로토 타입 기반 패턴의 문법적 설탕으로 도입되었지만, 새로운 객체 생성 메커니즘으로 보는 것이 낫다. 객체지향 프로그래밍(OOP) 객체지향 프로그래밍 vs 절차지향 프로그래밍 먼저 절차지향이란 물이 위에서 아래로 흐르는 것과 같이 코드가 순서대로 동작하는 것을 말한다. 이는 컴퓨터의 작업 처리 방식과 유사해, 객체지향 언어를 사용하는 것보다 더 빨리 처리된다(ex. C) 옛날에는 하드웨어와 소프트웨어의 개발 속도 차이가 크지 않았는..
16~17장을 읽으며 얻은 인사이트를 추가로 공부하면서 정리해 보자. 16장: 프로퍼티 어트리뷰트 17장: 생성자 함수에 의한 객체 생성 18장: 함수와 일급 객체 데이터 프로퍼티와 접근자 프로퍼티 객체의 프로퍼티는 2종류로 나뉜다. 데이터 프로퍼티: 키와 값으로 구성된 일반적인 프로퍼티를 의미 접근자 프로퍼티: 자체적으로는 값을 갖지 않고 다른 데이터 프로퍼티의 값을 읽거나 저장할 때 호출되는 접근자 함수로 구성된 프로퍼티 프로퍼티 어트리뷰트: JS엔진은 프로퍼티를 생성할 때 프로퍼티의 상태를 나타내는 프로퍼티 어트리뷰트를 기본 값으로 자동 정의 프로퍼티 디스크립터: 프로퍼티 어트리뷰트 정보를 제공 데이터 프로퍼티 데이터 프로퍼티는 아래와 같은 프로퍼티 어트리뷰트를 갖는데 아래 값들은 JS엔진이 프로퍼..
13~15장을 읽으며 얻은 인사이트를 추가로 공부하면서 정리해 보자. 13장: 스코프 14장: 전역 변수의 문제점 15장: let, const 키워드와 볼록레벨 스코프 1. 스코프 스코프 : 식별자가 유효한 범위 식별자는 자신이 선언된 위치에 의해 자신이 유효한 범위, 즉 다른 코드가 변수 자신을 참조할 수 있는 범위를 결정한다. 자바스크립트 엔진이 식별자를 검색할 때 사용하는 규칙 var x = 'global' function foo() { var x = 'local' console.log(x) // 'local' } foo(); console.log(x); // 'global' 두 개의 x변수는 식별자 이름이 동일하지만 자신이 유효한 범위, 즉 스코프가 다른 별개의 변수다. 네임스페이스 만약 스코프의..
10~12장을 읽으며 얻은 인사이트를 추가로 공부하면서 정리해 보자. 10장: 객체 리터럴 11장: 원시값과 객체의 비교 12장: 함수 1. 메서드 프로퍼티 값이 함수일 경우 일반 함수와 구분하기 위해 메서드라 부른다. 즉, 메서드는 객체에 묶여있는 함수를 의미한다. var circle = { radius : 5, // 프로퍼티 getDiameter : function () { // 메서드 return 2 * this.radius; } } 2. 원시 타입과 객체 타입의 차이 2-1. 원시 값은 변경 불가능한 값이지만, 객체(참조) 타입의 값은 객체는 변경가능한 값이다. 원시값은 변경 불가능한 값, 즉 읽기 전용값이다. let foo = 12 foo = 14 console.log(foo) // 14 변수는..
Modern Javascript Deep Dive 8~9장을 읽으며 얻은 인사이트를 추가로 공부하면서 정리해 보자. 1. 표현식과 문 표현식과 문은 어떻게 구분할 수 있을까? 가장 간단한 방법은 변수에 할당해보는 것이다. 문은 값이 아니기 때문에 변수에 할당할 수 없다. const foo = const bar const foo = true ? 'hi' : 'hello' 변수 선언 문 -> 값 x 삼항 조건 연산자 표현식 -> 값 o 조건 문 -> 값 x 2. Number()와 parseInt()의 차이 Number()와 parseInt() 둘 다 숫자 타입이 아닌 값을 숫자 타입으로 변환해 줄 수 있는 함수다. 하지만 아래와 같은 차이가 존재한다. 숫자와 다른 문자가 섞였을 때 Number()의 경우 변..
제어문은 조건에 따라 코드블록을 실행(조건문)하거나, 반복 실행(반복문)할때 사용한다. 블록문 블록문은 0개 이상의 문을 중괄호로 묶은 것으로, 코드 블록 또는 블록이라고 부르기도 한다. 자바스크립트는 블록문을 하나의 실행단위로 취급한다. 블록문은 단독으로 사용할 수도 있으나, 일반적으로는 제어문이나 함수를 정의할 때 사용한다. 문의 끝에는 세미콜론을 붙이는 것이 일반적이지만, 블록문은 언제나 문의 종료를 의미하는 자체 종결성을 갖기 때문에 블록문의 끝에는 세미콜론을 붙이지 않는다. // 블록문 { var foo = 10; } // 제어문 var x = 1; if (x < 10) { x ++; } // 함수 선언문 function sum(a,b) { return a + b; } 조건문 조건문은 주어진 조..
연산자는 하나 이상의 표현식을 대상으로 산술, 할당, 비교, 논리, 지수 연산 등을 수행해 하나의 값을 만든다. 이때 연산의 대상을 피연산자라 한다. 피 연산자는 값으로 평가될 수 있는 표현식이어야 한다. 그리고 피연산자와 연산자의 조합으로 이뤄진 연산자 표현식도 값으로 평가될 수 있는 표현식이다. // 산술 연산자 5*4 // 20 // 문자열 연결 연산자 'my name is' + 'kim' // 할당 연산자 color = 'red' // 비교 연산자 3 > 5 // false // 논리 연산자 true && false // false // 타입 연산자 typeof 'hi' // string 산술 연산자 + 연산자 +연산자는 피연산자 중 하나 이상이 문자열인 경우 문자열 연결 연산자로 동작하며, 그 ..
데이터 타입은 값의 종류를 말한다. 자바스크립트의 모든 값은 데이터 타입을 가지며, 자바스크립트는 7개의 데이터 타입을 제공한다. 7개의 데이터 타입은 원시타입과 객체 타입으로 분류할 수 있다. 구분 데이터 타입 설명 원시 타입 숫자 타입 숫자, 정수, 실수 구분 없이 하나의 숫자 타입만 존재 문자열 타입 문자열 불리언 타입 논리적 참(true)과 거짓(false) undefined 타입 키워드로 선언된 변수에 암묵적으로 할당되는 값 null 타입 값이 없다는 것을 의도적으로 명시할 때 사용하는 값 심벌 타입 ES6에서 추가된 7번째 타입 객체 타입 객체, 함수, 배열 등 숫자 타입 int, long, float, double 등과 같은 숫자 타입을 제공하는 C나 JAVA와 달리, 자바스크립트는 하나의 ..
값 값 : 식이 평가되어 생성된 결과 변수 : 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름 var sum =10 + 20; 변수에 할당되는 것은 값이다. sum변수에는 숫자 값 30이 할당된다. 리터럴 리터럴 : 사람이 이해할 수 있는 문자 또는 약속된 기호를 사용해 값을 생성하는 표기법 리터럴은 사람이 이해할 수 있는 문자(아라비아 숫자, 알파벳, 한글)또는 약속된 기호("",., {}, // 등)로 표기한 코드이다. 리터럴을 사용해 다양한 종류의 값을 생성할 수 있다. 표현식 표현식은 값으로 평가될 수 있는 문이다. 표현식이 평가되면 새로운 값을 생성하거나 기존 값을 참조한다. var score = 50 + 50; 50 + 50은 리터럴과 연산자..
변수는 왜 필요한가 메모리는 데이터를 저장할 수 있는 메모리 셀의 집합체이다. 메모리 셀 하나의 크기는 1바이트(8bit)이며, 컴퓨터는 메모리셀의 크기, 1바이트로 데이터를 저장하거나 읽어들인다. 각 셀은 고유의 메모리 주소를 가지며, 메모리 주소는 말 그대로 메모리 공간의 위치를 나타낸다. 10 + 20 숫자 값 10, 20이 메모리 상의 임의의 우치(메모리 주소)에 기억되고, CPU는 이 값을 읽어들여 연산을 수행한다. 연산을 끝냈다고 해보자. 그럼 메모리에는 10, 20, 30(연산결과)이 담길 것이다. 여기서 문제는, CPU가 연산하여 만들어 낸 숫자 30을 재사용할 수 없다는 것이다. 30을 재사용하고 싶다면 메모리 주소를 통해 연산결과 30이 저장된 메모리 공간에 직접 접근해야한다. 하지만 ..
helloyukyung
'Read' 카테고리의 글 목록