JavaScript

[모던 자바스크립트 Deep Dive] 11장 - 원시 값과 객체의 비교

11.1 원시 값변경 불가능한 값원시 타입의 값, 즉 원시 값은 변경 불가능한 값한번 생성된 원시 값은 읽기 전용 값으로서 변경할 수 없음변경 불가능하다는 것은 변수가 아니라 값에 대한 진술변수: 메모리 공간 자체값: 변수에 저장된 데이터변수는 언제든지 재할당을 통해 변수 값을 변경(교체)할 수 있다상수: 재할당이 금지된 변수불변성: 변수 값을 변경하기 위해 원시 값을 재할당하면 새로운 메모리 공간을 확보하고 재할당한 값을 저장한 후, 변수가 참조하던 메모리 공간의 주소를 변경함불변성을 갖는 원시 값을 할당한 변수는 재할당 이외에 변수 값을 변경할 수 있는 방법이 없음문자열과 불변성문자열: 0개 이상의 문자로 이뤄진 집합1개 문자는 2byte의 메모리 공간에 저장됨문자열은 몇 개의 문자로 이뤄졌느냐에 따..

JavaScript 2023.01.07

[모던 자바스크립트 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

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