일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 출처 : https://www.boostcourse.org/
- 에릭노이먼
- 함수형 코딩
- 출처는 코딩앙마
- 쏙속 들어오는 함수형코딩
- 김영한쌤
- 이웅모
- 갈길이 멀구나
- 고등애플
- 출처는 코딩애플
- 생코님Redux
- 출처 : 한입크기로 잘라먹는 타입스크립트
- 로버트 C마틴
- 쏙쏙 들어오는 함수형 코딩
- 쏙쏙들어오는함수형코딩
- 에릭 노이먼
- 흥달쌤
- 에릭 노먼드
- 나는 flux좋아...
- 자바스크립트 딥다이브
- 출처 : 코딩앙마
- 유틸리티타입은 공식문서 자주 보자
- 오종택개발자님
- 클린코드다시읽기
- 리엑트를 다루는 기술
- https://product.kyobobook.co.kr/detail/S000001952246
- 큰돌의 CS책
- 출처 : 자바스크립트 딥다이브
- 쏙쏙 들어오는 함수형코딩
- 출처 : 코딩애플
- Today
- Total
목록BoOk/JS deep dive (16)
흰둥씨의 개발장
자바스크립트는 명령형, 함수형, 프로토타입기반 객체지향 프로그래밍을 지원하는 멀티 패러다임 프로그래밍 언어 자바스크립트는 거의 모든 것이 객체임 ㄴ> 원시타입 값 제외한 나머지 값들(함수, 배열, 정규표현식, 객체...)는 모두 객체임 - 1) 객체 지향 프로그래밍 ㄴ여러개의 독립단위(=객체)의 집합으로 프로그램을 표현하려는 프로그래밍 패러다임 ㄴ실제 세계의 사물이나 개념을 인식하는 철학적 사고를 프로그래밍에 접목하려는 시도에서 시작함 - 객체 (object) : 속성을 통해 여러개의 값을 하나의 단위로 구성한 복합적인 자료구조 상태 데이터(property)와 상태데이터를 조작하는 동작(method)을 묶어서 하나의 논리 단위로 묶어둔 것 - 속성 (attribute / property) : 실체의 특징..
1) 일급객체 1. 무명의 리터럴로 생성할수 (=런타임에 생성가능) 2. 변수나 자료구조(객체, 배열...)에 저장할 수 있음 3. 함수의 매개변수에 전달가능 4. 함수의 반환 값으로 사용가능 위 조건을 만족하는 객체는 "일급객체" 자바스크립트의 함수는 일급객체임 함수의 특징 1. 함수를 객체와 동일하게 사용할 수 있음 2. 객체는 값이므로 함수도 갑과 동일하게 취급 = 값을 사용할수 있는 곳이라면 어디든 리터럴로 정의가능 3. 함수는 런타임에 객체로 평가됨 => JS의 함수는 일반객체와 같이 매개변수 전달 가능, 함수의 반환값으로 사용가능 해서 '함수형 프로그래밍' 가능 함수와 객체의 차이 1. 일반객체는 호출불가, 함수는 호출가능 2. 함수객체는 일반객체에 없는 고유의 프로퍼티를 가지고있음 2) 함수..
생성자 함수? new연산자와 함께 호출하여 객체(인스턴스)를 생성하는 함수 ㄴJS는 Object, String, Number, Boolean, Function, Array, Date, RegExp, Promise...등의 빌트인 생성자 함수 제공 인스턴스 ? 생성자 함수에 의해 생성된 객체 1) Object 생성자 함수 ㄴnew연산자와 함께 Object생성자 함수를 호출하면 빈객체를 생성하여 반환 ㄴ빈객체 생성이후 프로퍼티 or 메서드 추가해서 객체완성가능 const people = new Object(); //생성자 함수 이용해서 빈객체 생성 people.name = 'Zzanggu'; //프로퍼티 추가 people.sayhi = function () { //메서드 추가 console.log('Hi, ..
1) 내부 슬롯(internal slot)과 내부 메서드 (internal method) ㄴ자바스크립트 엔진의 구현 알고리즘을 설명하기 위해 ECMAscript사양에서 사용하는 pseudo property와 pseudo method const myObject = {}; myObject.[[property]]//SyntaxError; 내부 슬롯은 자바스크립트 엔진의 내부로직으로 직접접근불가 myObject.__proto__ // Object.prototype ; 일부 내부슬롯, 내부메서드 한하여 간접접근가능 2) 프로퍼티 어트리뷰트와 프로퍼티 디스크립터 객체 ㄴ자바스크립트 엔진은 프로퍼티 생성할때 프로퍼티 상태를 나타내는 속성을 기본값으로 자동정의함 ㄴ프로퍼티 상태 ? 프로퍼티의 값(value), 값갱신가..
1) var키워드로 선언한 변수의 문제 - 1) 변수의 중복선언 허용 var x = 1; var x = 2; //중복선언을 허용함 console.log(x); // 2 - 2) 함수레벨스코프 ㄴ함수의 코드블록만 지역스코프로 인정해줌 ㄴif문, for문과 같은 함수아닌 코드블록 안에서 선언하면 전역변수됨 var x = 100; if(true){ var x = 200; } console.log(x); //200 - 3) 변수 호이스팅 ㄴvar키워드로 선언된 변수는 변수선언 이전에 참조됨 (런타임전 참조되어 undefined로 초기화함) console.log(x); //undefined x = 100; console.log(x); //100 2) let 키워드 - 1) 변수 중복 선언 금지됨 let x = 1..
1) 변수의 생명주기 - 1) 지역 변수의 생명 주기 ㄴ 변수는 생물과 유사하게 생성되고 소멸되는 생명 주기(life cycle)가 있음 (변수의 생명주기는 메모리 공간이 확보allocate된 시점부터 메모리 공간이 해제release되어 가용 메모리 풀에 반환되는 시점까지임) ㄴ 전역변수의 생명주기는 애플리케이션의 생명주기와 같음 ㄴ지역변수의 생명주기는 함수의 생명주기와 일치함(함수내 선언된 변수는 함수가 호출되어 실행되는 동안에만 유효함 = 함수내 선언된 변수는 자신이 등록된 스코프가 소멸될때 까지 유효함, 할당된 메모리공간은 누구도 더이상 참조 하지 않을 때 가비지 콜렉터에 의해 화르륵) ㄴ변수는 자바스크립트 엔진에 의해 런타임 이전에 먼저 실행됨 (함수내 선언된 변수는 함수 호출시, 다른 문들이 순..
스코프 (scope, 유효범위) ㄴ식별자가 유효한 범위 ㄴ자바스크립트 엔진이 식별자를 검색할 때 사용하는 규칙 ㄴ네임스페이스(같은 공간에서 같은 이름 식별자 사용불가) - 1) 스코프의 종류 *전역(global) : 코드의 가장 바깥영역 (함수바깥) *지역(local) : 함수 내부 ㄴ변수는 자신이 선언된 위치(전역인지 지역인지)에 따라 스코프가 결정됨 ㄴ전역변수: 전역에서 선언된 변수(어디서든 참조가능) ㄴ지역변수 : 지역에서 선언된 변수 (함수내와 해당함수의 하위 지역 스코프에서만 유효함) - 2) 스코프 체인 ㄴ스코프가 함수의 중첩에 의해 계층적 구조를 가짐 ㄴ상위스코프 변수는 하위스코프에서 참조가능 ㄴ하위스코프 변수는 상위스코프에서 참조불가 - 3) 함수, 블록 레벨 스코프 * 블록레벨스코프 (b..
1) 함수 ㄴ수학의 함수처럼 입력(input)을 받아 출력(output)을 내보내는 일련의 과정 ㄴ프로그래밍 언어에서는 일련의 과정을 문(statement)으로 구현하고 코드블록으로 감싸서 하나의 실행단위로 정의한 것 ㄴ매개변수(parameter) : 함수 내부로 입력을 전달 받는 변수 ㄴ인수(argument) : 입력 ㄴ반환값(return value) : 출력 ㄴ함수는 값이고, 여러개 존재할 수 있어, 특정 함수를 구별하기 위해 식별자인 함수 이름을 사용 (함수역할 파악할수 있게 ; 가독성높이기) ㄴ함수정의만으로 함수 실행되지 않고 함수 호출해야함 ㄴ함수호출 (function call/ invoke) : 인수를 매개변수를 통해 함수에 전달하여 함수 실행을 명시적으로 지시해야 함 ㄴ함수를 사용하는 이유는..
- 원시 타입 (primitive type) ㄴ원시 값은 변경불가능한 값(immutable value) ㄴ원시 값을 변수에 할당하면 변수(확보된 메모리)에 실제 값이 저장됨 ㄴ원시 값을 갖는 변수를 다른 변수에 할당하면 원본값이 복사되어 전달됨(값에 의한 전달) - 객체 타입 (object/ reference type) ㄴ객체는 변경가능한 값(mutable value) ㄴ객체를 변수에 할당하면 변수에 참조 값 저장됨 ㄴ객체를 가리키는 변수를 다른 변수에 할당하면 원본의 참조 값이 복사되어 전달(참조에 의한 전달) 1) 원시값 - 1) 변경 불가능한 값 (불변성) ㄴ한번 생성된 원시값은 읽기 전용 값= 불변 = 데이터 신뢰성 보장 ㄴ재할당하면 변수가 참조하던 메모리 공간의 주소 변경됨 (할당된 원시값이 변..
자바스크립트는 객체 기반의 프로그래밍 언어 ㄴ객체의 집합으로 프로그램을 표현하는 프로그래밍 패러다임 1) 객체 - 객체 (= object) ㄴ0개이상의 프로퍼티로 구성된 집합 (프로퍼티는 키 key와 값 value로 구성됨) ㄴ함수도 프로퍼티 값으로 사용가능 / 프로퍼티 값이 함수면 일반함수와의 구별을 위해 method라고 부름 ㄴ프로퍼티와 메서드로 구성된 집합체 ㄴ변경 가능한 값 (mutable value) ㄴ자바스크립트를 구성하는 거의 '모든 것' ㄴ원시값(변경 불가능한 값)을 제외한 나머지 값(함수, 배열, 정규표현식 등) ㄴ값과 메서드를 모두 포함할수 있어 상태와 동작을 하나의 단위로 구조화할 수 있어 유용함 - 객체 타입(= reference type)? 다양한 타입의 값을 하나의 단위로 구성한..
1) 타입변환 - 명시적 타입변환 (= explicit coercion = 타입캐스팅 ) ㄴ개발자가 의도적으로 값타입 변환하는 것 let x = 10; let str = x.toString(); // '10' 숫자 => 문자열 String(1); // 1 Infinity + '' //'Infinity' 암묵적 타입변환을 의도적으로 이용 Number('0'); // 0 ParseInt('0'); // 0 문자열 => 숫자열 (문자열만 변환가능) parseFloat('10.2'); // 10.2. 문자열 => 숫자열 (문자열만 변환가능) +'10'; // 10 문자열 => 숫자열 '10' * 1 // 10 문자열 => 숫자열 +true; // 1 boolean => 숫자열 true * 1 // 1 boole..
제어문 (control flow statement) ㄴ조건에 따라 코드 블록을 실행(조건문)하거나 반복실행 (반복문)할때 사용 ㄴ일반적으로 위에서 아래방향으로 순차 실행 ㄴ제어문 사용시 코드 실행흐름 인위적으로 제어 가능 => 순차흐름을 바꾸면 "가독성"을 해침 => 오류로 이어지기도함 1) 블록문 (block statement/ compound statement = 코드 블록 = 블록) ㄴ0개 이상의 문을 중괄호로 묶은 것 ㄴ자바스크립트가 1개의 실행단위로 취급함 ㄴ단독 사용보다는 제어문, 함수를 정의 할때 사용하는 것이 일반적 ㄴ블록문은 자체종결성을 가져서 ;는 안붙임 { let num = 10; } let x = 1; if( x < 10 ) { x++; } function sum (x, y){ re..