전체 글

[모던 자바스크립트 Deep Dive] 10장 - 객체 리터럴

10.1 객체란?js는 객체 기반의 프로그래밍 언어, 원시 값을 제외한 나머지 값은 모두 객체원시 타입은 단 하나의 값만 나타내고 원시 값은 변경 불가능한 값객체 타입은 다양한 값(원시 값 또는 다른 객체)을 하나의 단위로 구성한 복합적인 자료구조이며 객체 값은 변경 가능한 값객체는 0개 이상의 프로퍼티로 구성된 집합이며, 프로퍼티는 키와 값으로 구성js에서 사용할 수 있는 모든 값은 프로퍼티 값이 될 수 없음js의 함수는 일급 객체이므로 값으로 취급할 수 있음. → 함수도 프로퍼티 값으로 사용 가능프로퍼티 값이 함수일 경우 일반 함수와 구분하기 위해 메서드라 부름객체는 프로퍼티와 메서드로 구성된 집합체프로퍼티: 객체의 상태를 나타내는 값메서드: 프로퍼티(상태 데이터)를 참조하고 조작할 수 있는 동작객체..

JavaScript 2023.01.07

[모던 자바스크립트 Deep Dive] 09장 - 타입 변환과 단축 평가

9.1 타입 변환이란?자바스크립트의 모든 값은 타입이 있고, 개발자의 의도에 따라 다른 타입으로 변환 가능명시적 타입 변환(=타입 캐스팅): 개발자가 의도적으로 값의 타입을 변환하는 것암묵적 타입 변환(=타입 강제 변환)원시 값은 변경 불가능한 값 → 타입 변환은 기존 원시 값을 사용해 다른 타입의 새로운 원시 값을 생성하는 것단 한번 사용하고 버림 → 기존 변수 값을 재할당하여 변경하는 것이 아님9.2 암묵적 타입 변환개발자 의도와 상관없이 표현식을 평가하는 도중에 js 엔진에 의해 암묵적으로 타입이 자동 변환되는 것문자열 타입으로 변환1 + "2" // -> "12"+연산자는 피연산자 중 하나 이상이 문자열일 때 문자열 연결 연산자로 동작문자열 연결 연산자: 문자열 값을 만듦, 모든 피연산자는 모두 ..

JavaScript 2023.01.07

[모던 자바스크립트 Deep Dive] 08장 - 제어문

8장 도입제어문: 조건에 따라 코드 블록을 실행(조건문)하거나 반복 실행(반복문)할 때 사용일반적으로 코드는 위에서 아래 방향으로 순차적으로 실행제어문을 사용하면 코드의 실행 흐름을 인위적으로 제어할 수 있음⇒ 코드 흐름을 이해하기 힘들고 가독성을 해치는 단점⇒ 추후에 살펴볼 고차 함수를 통해 제어문 사용을 억제하여 복잡성 해결8.1 블록문블록문: 0개 이상의 문을 중괄호로 묶은 것코드 블록, 블록이라고 부르기도 함js는 블록문을 하나의 실행 단위로 취급단독으로 사용할 수도 있으나 일반적으로 제어문이나 함수를 정의할때 사용언제나 문의 종료를 의미하는 자체 종결성을 갖기 떄문에 블록문의 끝에는 세미콜론을 붙이지 않음// 블록문{ var foo = 10;}// 제어문var x = 1;if (x 8.2 조건..

JavaScript 2022.12.19

[모던 자바스크립트 Deep Dive] 07장 - 연산자

7장 도입연산자: 하나 이상의 표현식을 대상으로 산술, 할당, 비교, 논리, 타입, 지수 연산 등을 수행해 하나의 값을 만듦피연산자: 연산의 대상, 값으로 평가될 수 있는 표현식어야 함7.1 산술 연산자산술 연산자: 피연산자를 대상으로 수학적 계산을 수행해 새로운 숫자 값을 만듦산술 연산이 불가능한 경우, NaN을 반환이항 산술 연산자2개의 피연산자를 산술 연산하여 숫자 값을 만듦피연산자의 값을 변경하는 부수 효과 없고 언제나 새로운 값을 만들 뿐임단항 산술 연산자1개의 피연산자를 산술 연산하여 숫자 값을 만듦증가/감소 연산자는 피연산자의 값을 변경하는 부수 효과가 있음피연산자의 값을 변경하는 암묵적 할당이 이뤄짐전위 증가/감소 연산자: 먼저 피연산자의 값을 증가/감소시킨 후, 다른 연산을 수행후위 증가..

JavaScript 2022.12.19

[모던 자바스크립트 Deep Dive] 06장 - 데이터 타입

6장 도입데이터 타입(=타입): 값의 종류js의 모든 값은 데이터 타입을 가짐7개의 데이터 타입 제공 - 원시 타입과 객체 타입으로 분류6.1 숫자 타입js는 하나의 숫자 타입만 존재배정밀도 64bit 부동소수점 형식을 따름모든 수를 실수로 처리, 정수를 표현하기 위한 데이터 타입 존재X정수로 표시된다해도 사실은 실수임 → 정수로 표시되는 수끼리 나누더라도 실수가 나올 수 있음정수, 실수, 2진수, 8진수, 16진수 리터럴은 모두 메모리에 배정밀도 64bit 부동소수점 형식의 2진수로 저장js는 2진수, 8진수, 16진수를 표현하기 위한 데이터 타입을 제공X → 모두 10진수로 해석그 외 숫자 타입 가능한 표현 방법Infinity: 양의 무한대-Infinity: 음의 무한대NaN: 산술 연산 불가(not..

JavaScript 2022.12.19

[모던 자바스크립트 Deep Dive] 05장 - 표현식과 문

5.1 값값(value): 식(표현식) 이 평가되어 생성된 결과평가: 식을 해석해서 값을 생성하거나 참조하는 것// 10 + 20은 평가되어 숫자 값 30을 생성10 + 20; // 30모든 값은 데이터 타입을 가지며, 메모리에 2진수(bit의 나열)로 저장됨메모리에 저장된 값은 데이터 타입에 따라 다르게 해석될 수 있음 ex) 0100 0001 - 65(숫자로 해석) or ‘A’(문자로 해석)변수는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름 → 변수에 할당되는 것은 값// 변수에는 10 + 20이 평가되어 생성된 숫자 값 30이 할당된다.var sum = 10 + 20;변수 메모리 공간에 저장되는 것은 10+20이 아닌 값 30 → 10 + 20..

JavaScript 2022.12.19

Git 기본 개념 정리

둘 이상의 원격저장소로 협업하기원본저장소를 복사해서 나의 원격저장소를 만든다(fork)branch, fork원본 저장소에 커밋을 직접 푸시할 수 있는 사람은 본인(소유자) 뿐다른 사람이 푸시하려면 협력자(Collaborator)로 등록해야 함협력자가 5명정도면 걍 모두 협력자 등록하고 브랜치 나눠서 작업하는게 효율적직접 푸시하는게 부담 → pull requestfork한 원격저장소의 브랜치에서 원본저장소의 브랜치로 풀리퀘fork브랜치를 포함한 원본저장소의 모든 커밋 이력을 새로운 원격저장소로 통째로 복사복제한 원격저장소는 새로운 주소로 독립 → 이곳의 이력을 보려면 추가적으로 원격저장소 주소 등록해야 함 의의편리한 점불편한 점브랜치하나의 원본저장소에서 분기를 나눈다.하나의 원본저장소에서 코드 커밋 이력을..

Git 2022.12.17

[모던 자바스크립트 Deep Dive] 04장 - 변수

4.1 변수란 무엇인가? 왜 필요한가?10 + 20자바스크립트 엔진이 위 코드를 계산(평가)하려면 먼저 10, 20, + 라는 기호(리터럴과 연산자)의 의미를 알고 있어야 하며, 10 + 20 이라는 식(표현식)의 의미도 해석(파싱)할 수 있어야 함자바스크립트 엔진은 + 연산을 수행하기 전에 피연산자 값을 기억함컴퓨터는 연산과 기억을 수행하는 부품이 나눠져 있음CPU를 통해 연산메모리를 사용해 데이터를 기억메모리데이터를 저장할 수 있는 메모리 셀의 집합체메모리 셀 하나의 크기: 1byte(8bit)컴퓨터는 메모리 셀의 크기인 1byte 단위로 데이터를 저장하거나 읽어들임각 셀은 고유의 메모리 주소를 갖음메모리 주소메모리 공간의 위치를 나타냄0부터 시작해서 메모리 크기만큼 정수로 표현됨ex) 4GB 메모리..

JavaScript 2022.12.12

JavaScript | 자바스크립트 개발 환경과 실행 방법

자바스크립트 실행 환경모든 브라우저와 Node.js는 JavaScript를 해석하고 실행할 수 있는 JavaScript 엔진을 내장하고 있음이 둘은 코드가 동일하게 동작하지만, 용도가 다름⇒ 브라우저와 Node.js는 자바스크립트의 코어인 ECMAScript를 실행할 수 있지만, ECMAScript 이외에 추가로 제공하는 기능은 호환하지 않음브라우저주 목적: HTML, CSS, JavaScript를 시행해 웹페이지를 브라우저 화면에 렌더링하는 것ECMAScript와 DOM API 등의 클라이언트 사이드 Web API를 기본적으로 제공Node.js주 목적: 브라우저 외부에서 JavaScript 실행 환경을 제공하는 것ECMAScript와 파일 시스템 등의 고유 API를 기본적으로 제공웹 브라우저구글 크롬 ..

JavaScript 2022.12.12

JavaScript | 자바스크립트란?

자바스크립트의 탄생1995년, 넷스케이프 커뮤니케이션즈는 웹페이지의 보조적인 기능을 수행하기 위해 브라우저에서 동작하는 경량 프로그래밍 언어를 도입하기로 결정이름 변천 과정: Mocha → LiveScript→ JavaScript현재 모든 브라우저의 표준 프로그래밍 언어로 자리 잡음 자바스크립트의 표준화1996년, 마이크로소프트에서 JavaScript의 파생 버전인 JScript를 인터넷 익스플로러에 탑재JScript와 JavaScript가 표준화되지 못하고 적당히 호환됨 (경쟁) → 웹페이지가 정상적으로 동작하지 않는 크로스 브라우징 이슈 발생넷스케이프 커뮤니케이션즈는 컴퓨터 시스템의 표준을 관리하는 비영리 표준화 기구인 ECMA 인터내셔널에 JavaScript 표준화 요청1997년, ECMA-262라..

JavaScript 2022.12.12

JavaScript | 프로그래밍이란?

프로그래밍컴퓨터에게 실행을 요구하는 일종의 커뮤니케이션프로그래밍 언어는 구문과 의미 조합으로 표현 요구되는 것문제 해결 능력문제(요구사항)를 명확히 이해복잡함을 단순하게 분해자료를 정리하고 구분순서에 맞게 행위를 배열⇒ 0과 1밖에 알지 못하는 기계가 실행할 수 있을 정도로 정확하고 상세하게 요구사항을 설명하는 작업, 그 결과물이 코드컴퓨팅 사고: 문제 해결 방안을 고려할 때 컴퓨터의 입장에서 문제를 사고 해야 한다.논리적, 수학적 사고 필요해결 과제를 작은 단위로 분해하고 패턴화해서 추출프로그래밍 내에서 사용될 모든 개념은 평가 가능하도록 정의해야 함 프로그래밍 언어문제 해결 능력을 바탕으로 정의된 문제 해결 방안은 컴퓨터에게 전달돼야 함명령을 수행할 주체는 컴퓨터 → 컴퓨터가 이해할 수 있는 언어인 ..

JavaScript 2022.12.12