자바스크립트는 웹 프로그래밍 언어로 역사상 가장 널리 사용되는 언어이다고수준이고 동적이며타입을 명시할 필요가 없는 인터프린터 언어객체지향 프로그래밍 스타일과 함수형 프로그래밍 스타일을 모두 잘 표현하는 언어Java의 문법, Scheme의 1종 함수 개념, Self의 프
어떻게 프로그램을 작성해야 하는지에 대한 기본 규칙변수 이름 작성법 등의 가장 저수준 문법자바스크립트 프로그램은 Unicode 문자 집합을 사용해 작성된다Unicode: ASCII나 Latin-1의 상위 집합으로 지구상 대부분의 문자 표현 가능ES3 표준을 따르는 자바
컴퓨터 프로그램은 숫자나 문자열 같은 값을 다룬다프로그래밍 언어로 다룰 수 있는 갚의 유형을 데이터 타입이라고 한다이것은 프로그래밍 언어의 가장 기본적 특징이 된다프로그램은 값이 유지될 필요가 있을 때 변수에 값을 할당(저장)한다자바스크립트의 타입은 크게 원시 타입,
날짜와 시간을 표현하는 Date() 객체 생성자를 제공Date 객체는 원시 타입이 아니다문자열은 16비트 값들이 연속적으로 나열된 변경 불가능한 값유니코드 문자로 표현된다문자열의 길이는 16비트 값의 개수다0 기반의 인덱싱 사용문자 하나를 표현하는 타입이 없으므로 길이
선언: 값 할당 없이 변수만 작성할당: 변수 선언과 동시에 값을 초기화선언 시 값이 할당(초기화)될 때 까지 undefined자바스크립트에서는 타입을 지정하지 않기 때문에숫자로 쓰던 변수에 문자를 쓰던가 할 수 있음선언되지 않은 변수를 읽거나 선언되지 않은 변수를 쓰려
전역 변수를 선언한다는 것은 전역 객체의 프로퍼티를 정의하는 것이다var 사용 시 생성된 프로퍼티는 수정이 불가능하고, delete 연산자로 소멸시킬 수 없다는 뜻var를 사용하지 않고 할당한 변수는 전역 객체의 평범하고 수정 가능한 프로퍼티로 들어가고 삭제도 가능하다
자바스크립트 인터프리터가 값으로 평가하는 구문명시적으로 초기화 하지 않은 값을 참조하려하면undefinedES5 엄격 모드에서는 참조 에러가 발생객체나 배열 표현식은 객체 리터럴, 배열 리터럴로 표현되지만 기본 표현식이 아니다프로퍼티와 원소의 값을 지정하는 하위 표현식
자바스크립트의 기본 데이터 타입은 객체객체는 일종의 복합체로 여러 값(원시 타입 혹은 객체)들을 묶어 이름으로 저장, 값을 가져올 수 있다객체는 이름과 값으로 구성된 프로퍼티들의 정렬되지 않은 집합이다프로퍼티 이름은 문자열이기 때문에 문자열을 값에 대응시키는 구조라고
객체의 프로퍼티의 이름을 알 수 없는 경우 \[] 연산자를 사용자바스크립트 객체는 고유 프로퍼티들을 가지고 있고, 동시에 해당 객체의 프로토타입 객체로부터 여러 프로퍼티를 상속받는다객체에서 프로퍼티를 찾을 때 해당 객체에 프로퍼티가 존재하지 않으면프로토타입 객체에서,
객체의 프로퍼티를 삭제한다프로퍼티의 값을 지우는 것이 아니라 프로퍼티 자체를 삭제한다상속받은 프로퍼티가 아닌 고유 프로퍼티만 지울 수 있다상속된 것을 지우기 위해서는 해당 프로퍼티가 정의된 곳에서\-> 상속받고있는 모든 객체에 영향을 준다delete는 삭제 성공, 프로
배열은 정렬된 값의 집합(?) - 인덱스가 순서대로 있다는 뜻인듯 합니다자바스크립트 배열은 타입이 정해져있지 않다덕분에 더 정교한 자료구조를 만들 수 있다자바스크립트 배열은 32비트 인덱스를 사용한다최대 약 43억개의 원소를 가질 수 있다동적 크기를 가지기 때문에 크기
delete로 삭제 시 값만 undefined가 되고 희소 배열이 되어버림쓰지말자아니 사실 원본 배열을 건드리는 것 자체를 쓰지말자..arr.filter()로 죠져순회 조건에 i < arr.length 를 넣으면 매번 length를 불러오게 되어 비효율적이니긴 배
배열은 특별한 형태의 객체다배열을 검사하기 위해서는 length 프로퍼티length 값 변경으로 배열 크기를 줄일 수 있다Array.prototype에 정의된 메소드를 상속 받는다배열의 class 속성 값은 'Array'Arguments 객체가 유사 배열 객체유사 배열
함수는 한 번 정의하면 계속 재사용, 호출할 수 있는 자바스크립트 코드 블록이다함수 정의에는 매개변수, 형식 인자라고 불리는 식별자 목록이 포함될 수 있고, 함수 몸체 내에서 지역 변수처럼 취급된다함수 호출시에는 함수의 매개변수에게 값(실 인자 - arguments)
자바스크립트의 함수는 객체이고, 모든 자바스크립트 객체와 같이 함수에도 메소드가 있다그 중 call()과 apply()는 함수를 간접적으로 호출한다두 메소드 모두 this 값을 명식적으로 지정할 수 있는데, 어떤 함수든지 특정 객체의 메소드로 호출할 수 있다는 뜻이다심
자바스크립트에서 함수는 원시 값이 아니지만 특별한 종류의 객체이고 이는 함수가 프로퍼티를 가질 수 있음을 의미한다함수를 여러번 호출해도 유일한 값이 유지되어야 하는 정적 변수가 필요할 떄는 함수의 프로퍼티를 사용하는 것이 편리한 경우가 많다자바스크립트는 함수 단위의 유
다른 언어와 마찬가지로 자바스크립트도 어휘적 유효 범위 (lexical scoping)을 사용한다함수가 정의된 시점의 변수 유효범위를 사용하여 함수가 실행된다이러한 어휘적 유효 범위를 구현하기 위해, 자바스크립트 함수 객체는 내부 상태에 함수 자체의 코드뿐만 아니라 현
자바스크립트에서 함수는 일종의 값이다typeof를 하면 "function" 이지만 함수는 독특한 자바스크립트 객체다함수는 객체이기 때문에 프로퍼티와 메소드를 가질 수 있다또한, Function() 생성자 또한 가지고 있다함수 몸채 내에서 arguments.length는
함수 정의문, 함수 리터럴 모두 function 키워드를 사용하여 함수를 정의한다하지만 함수는 Function() 생성자를 통해서도 정의될 수 있다Function() 생성자는 문자열을 받고, 익명 함수를 생성한다동적으로 함수를 생성하고, 실행 시간에 컴파일 되는 것을
자바스크립트는 함수형 프로그램 언어는 아니지만 함수를 객체로 취급할 수 있다는 것은 함수형 프로그래밍 기법을 사용할 수 있다는 것이다map()이나 reduce() 같은 함수는 함수형 프로그래밍 스타일에 적합한 구조를 지니고 있다.자바스크립트의 함수는 그만큼 강력하다고차
객체끼리 특정 프로퍼티를 공유할 수 있도록 클래스를 정의하는 것은 종종 유용하다클래스의 구성원인 인스턴스는 상태를 정의하거나 저장하는 프로퍼티를 가지고 있고, 그들의 동작을 정의하는 메소드를 가지고 있기도 하다메소드는 클래스 수준에서 정의되고 모든 인스턴스가 공유한다자
드디어 2020년 버전의 자바스크립트를 다룬 완벽가이드 7판을 구매es5까지만 다루던 지난 버전과 가장 다른 부분이 let과 const를 통한 변수 선언 같다번역도 훨씬 자연스럽다ES6 이후 자바스크립트는 let과 const로 변수를 선언한다var는 특이한 놈let과
책의 코드 스타일 세미콜론은 필요할 때만 들여쓰기는 공백 4개.. 중요하지 않은 변수에 간결한 변수명 사용 - a, f, _ 등 자바스크립트 최신 문법 사용 가능하면 스프레드 연산자 사용 모든 것에 type을 붙이고, 가능하면 구체적 타입으로 추론 재사용할 수 있는 범
타입스크립트는 자바스크립트나 자바 같은 주요 언어와는 다르게 동작한다컴파일러에서 아래와 같은 동작으로 프로그램이 실행됨프로그램이 작성된 텍스트 파일 -> AST AST-> 바이트코드바이트코드를 런타임 프로그램에 전달하여 평가, 결과 반환 받음프로그램이 작성된 텍스트 파
저자는 vscode를 선호한다고 함아톰, 빔, 웹스톰 등..TSC도 타입스크립트로 구현된 명령행 도구이므로 TSC를 실행하려면 node.js가 필요하다node.js는 프로젝트 의존성이나 빌드를 관리하는 패키지 관리자 npm을 포함한다npm을 이용해 tsc와 tslint
값과 값으로 할 수 있는 일의 집합boolean: bool값과 bool에 수행할 수 있는 모든 연산(||, && 등)number: 모든 숫자와 숫자에 적용할 수 있는 모든 연산 및 메소드string: 모든 문자열과 문자열에 수행할 수 있는 모든 연산과 메소드어떤 값이
boolean boolean 타입은 참과 거짓 두 개의 값 이 타입으로는 비교 연산과 반전 연산을 할 수 있을 뿐 많은 연산을 지원하지 않는다 어떤 값이 boolean인지 타입스크립트에게 알려주는 방법 어떤 값이 boolean인지 타입스크립트가 추론하게 한다 어떤
string은 모든 문자열의 집합으로 연결, .slice() 등의 연산을 수행할 수 있다boolean과 number와 같이 string 타입도 네 가지 방법으로 선언할 수 있으며, 타입을 추론하도록 두는 편이 좋다심볼은 ES2015에 새로 추가된 기능이다실무에서는 심볼
타입스크립트의 객체 타입은 객체의 형태를 정의한다형태만 구분하기 때문에 객체 리터럴과 new 연산자로 생성한 객체를 구분할 수 없다구조 기반 타입화에서는 객체의 이름과 상관 없이 어떤 프로퍼티를 가지고 있는지를 구분한다 (덕 타이핑)타입을 object으로 어노테이션 하
값의 타입에 따라 수행할 수 있는 연산이 달라진다타입에도 동작을 수행할 수 있다타입스크립트가 별칭을 추론하지는 않기 때문에별칭 타입은 반드시 명시해야 한다let, const 변수 선언과 마찬가지로 하나의 타입을 두 번 선언할 수 없고, 블록 레벨 스코프를 가진다타입 별
자바스크립트와 마찬가지로 배열은 특별한 객체다T\[] 와 Array 두 가지 배열 문법을 지원한다의미는 같고, 책에서는 간결한 T\[]문법 선호타입스크립트는 배열을 초기화 한 값을 기준으로 추론한다빈 배열로 초기화 하면 any 타입으로 추론한다타입을 명시해주면 된다배열
튜플은 배열의 서브타입길이가 고정되어 있고, 타입이 알려진 배열의 일종튜플은 선언 시에 타입을 명시해야만 한다자바스크립트에서는 배열과 튜플에 같은 문법(대괄호)를 사용하지만타입스크립트는 대괄호를 쓰는 문법을 모두 배열 타입으로 추론하기 때문이다튜플은 선택형 요소도 지원
타입스크립트에서는 값의 부재를 표현하기 위해자바스크립트에서의 null과 undefined, 추가로 void와 never 타입을 지원한다null과 undefined는 각각 값 자체가 타입이 되는 특별한 타입이다void와 never는 조금 더 정밀한 부재에 대한 표현이다둘
열거형은 해당 타입으로 사용할 수 있는 값을 열거하는 것으로키를 값에 할당하는 순서가 없는 자료구조다키가 컴파일 타임에 고정된 객체타입스크립트에만 존재하는 기능으로 컴파일 시 자바스크립트의 즉시 실행 함수가 생성되어 tree-shaking이 되지 않는다 -> 쓴다면 c
타입스크립트에서 가장 중요함함수를 선언하고 실행하는 방법들시그니처 오버로딩다형적 함수다형적 타입 별칭자바스크립트에서 함수는 일급 객체다객체를 다루듯 함수를 변수에 할당하거나,함수를 다른 함수로 전달하거나,함수에서 함수를 반환하거나, 객체와 프로토타입에 할당하거나,함수에
실무에서는 기본 매개변수를 더 자주 사용한다객체와 튜플 타입에서와 같이 ?를 이용해 선택적 매개변수를 지정할 수 있다필수 매개변수를 모두 작성한 후에 선택적 매개변수를 끝에 넣는다기본 매개변수는 어느 위치에나 추가할 수 있다매개변수 = 값 형식으로 기본 값을 지정한다기
arguments arguments는 안전하지 않다
제너레이터는 여러 개 값을 생성하는 편리한 기능을 제공한다제너레이터 함수를 이용하면 값을 생산하는 속도도 조절할 수 있다제너레이터는 게으르게 동작(요청을 해야만 다음 값을 계산) 하기 때문에까다로운 기능을 제공할 수 있다함수 명 앞에 붙는 별표는 해당 함수가 제너레이터
함수의 호출 시그니처를 작성, 사용하면 매개변수의 타입을 다시 지정할 필요는 없다 이러한 것을 문맥적 타입화라고 한다이는 타입스크립트의 강력한 추론 기능이다함수 선언을 인라인으로 제공하면 인수로 전달되는 타입을 명시할 필요가 없다
type Fn = () => void 와 같은 문법은 단축된 함수 타입 문법이다더 명확히 표현할 수 있다전체 호출 시그니처 문법은 다르지만 완전히 같은 뜻이다복잡한 함수일수록 전체 호출 시그니처로 표현하는 것이 좋을 수 있다함수 타입의 오버로딩이 좋은 예이다오버로드 된
단방향 데이터 바인딩으로 데이터 흐름을 읽기 쉽다명시적인 상태 변화로 상태 변화를 읽기 쉽다JSX 문법이 기존의 HTML 과 비슷하여 코드를 읽기 쉽다자유도가 높다SPA 의 사용성양방향보다 불편함양방향보다 상대적으로 코드의 규모가 크다 (VanilaJS 보단 작아짐)H
코드 정리는 작은 리팩토링코드 정리는 작게 시작하는 것이 좋다조건문 안에 많은 코드를 작성하기 보다는반대되는 조건으로 코드 상단에 return 문을 작성if (조건) return부합하는 경우에 작성하면 좋지만너무 여러 조건을 중첩하면 이해하기 힘들다지운다나중에 필요할
싱글 페이지 애플리케이션이란렌더링과 라우팅에 필요한 대부분의 기능을 서버가 아닌 브라우저의 자바스크립트에 의존하는 방식을 의미한다첫 데이터에서 데이터를 모두 불러온 이후로 페이지 전환을 위한 모든 작업이자바스크립트와 브라오저의 history.pushState, hist