목록BOOKS (46)
\(@^0^@)/
오늘 읽은 범위 : (실행 컨텍스트) p.53 ~ p.64 스코프, 스코프 체인, outerEnvironmentReference 스코프(scope) : 식별자에 대한 유효 범위 ES5까지의 JS는 전역 공간을 제외하면 오직 함수에 의해서만 스코프가 생성됐음. (var) 스코프 수준(level) : 함수 스코프(Function Scope) : var , 함수 외부에서 함수 내부의 변수에 접근 불가 블록 스코프(Block Scope) : let, const , 블록 외부에서 블록 내부의 변수에 접근 불가 스코프 종류(Function Level Scope) : 전역 스코프(Global Scope) : 어떤 경계 A의 외부에서 선언한 변수는 A의 외부뿐 아니라 A의 내부에서도 ..
오늘 읽은 범위 : 4장. 주석 (p. 68 ~) 우리는 코드로 의도를 표현하지 못해, 실패를 만회하기 위해 주석을 사용한다. 주석을 달 때마다 자신에게 표현력이 없다는 사실을 푸념해야 마땅하다. 코드는 변화하고 진화한다. 불행하게도 주석이 언제나 코드를 따라가지는 않는다. 아니, 따라가지 못한다. 주석이 코드에서 분리되어 점점 더 부정확한 고아로 변하는 사례가 너무도 흔하다. 부정확한 주석은 아예 없는 주석보다 훨씬 더 나쁘다. 부정확한 주석은 결코 이뤄지지 않을 기대를 심어준다. 코드만이 정확한 정보를 제공하는 유일한 출처이다. 주석은 나쁜 코드를 보완하지 못한다. 표현력이 풍부하고 깔끔하며 주석이 거의 없는 코드가, 복잡하고 어수선하며 주석이 많이 달린 코드보다 훨..
오늘 읽은 범위 : (실행 컨텍스트) p.36 ~ p.53 실행 컨텍스트 실행 컨텍스트 : 실행할 코드에 제공할 환경 정보들을 모아놓은 객체 스택 (stack) : 출입구가 하나뿐인 깊은 우물 같은 데이터 구조 큐 (queue) : 양쪽이 모두 열려있는 파이프, 보통 한쪽은 입력만 다른 한쪽은 출력만을 담당. 실행 방법 : 동일한 환경에 있는 코드들을 실행할 때 필요한 환경 정보들을 모아 컨텍스트를 구성하고 이를 call stack에 쌓아 올렸다가 실행. 구성 방법 : 함수를 실행하는 것 (자동으로 생성되는 전역 공간과 eval 제외) 1. JS 파일이 실행되는 순간 전역 컨텍스트가 활성화되어 콜 스택에 담김. 2. outer 함수를 호출하는 순간 해당 함수의 환경 정보..
프리온보딩 코스를 하는 동안 너무 바빠서 노개북을 참여하지 못하고 한달이 넘는 시간이 지났다ㅠ 지금이라도 진짜 꾸준히 해보자! 오늘 읽은 범위 : 3장. 함수 (p. 40 ~) 어떤 프로그램이든 가장 기본적인 단위가 함수다. 작게 만들어라! if 문/ else 문/ while 문 등에 들어가는 블록은 한 줄이어야 한다. 중첩 구조가 생길만큼 함수가 커져서는 안 된다는 뜻. 그러므로 함수에서 들여쓰기 수준은 1단이나 2단을 넘어서면 안 된다. 한 가지만 해라! 함수는 한 가지를 해야 한다. 그 한 가지를 잘 해야 한다. 그 한 가지만을 해야 한다. 함수 당 추상화 수준은 하나로! 함수가 확실히 '한 가지' 작업만 하려면 함수 내 모든 문장의 추상화 수준이 동일해야 한다. 코드는 위에서 아래로 이야기처럼 읽..
[ 코어 자바스크립트 DAY 2 ] 오늘 읽은 범위 : (데이터 타입) p.20 ~ p.35 참조형 데이터의 '가변'은 데이터 자체가 아닌 내부 프로퍼티를 변경할 때만 성립. 데이터 자체를 변경하고자 하면 (새로운 데이터를 할당하고자 하면) 기본형 데이터와 마찬가지로 기존 데이터는 변하지 않는다. 불변성을 확보할 수 있는 경우 : 1. 내부 프로퍼티를 변경할 필요가 있을 때마다 매번 새로운 객체를 만들어 재할당하기로 규칙을 정하거나 2. 자동으로 새로운 객체를 만드는 도구를 활용 3. 불변성을 확보할 필요가 있을 경우에는 불변 객체로 취급, 그렇지 않은 경우네는 기존 방식대로 사용. 불변 객체가 필요한 경우 : 값으로 전달받은 객체에 변경을 가하더라도 원본 객체는 변하지 않아야 하는 경우. 얕은 복사(s..
[ 클린 코드 DAY 3 ] 오늘 읽은 범위 : 2장. 의미 있는 이름 (p. 21 ~) 의미 있는 이름을 짓기 위해서는 의도를 분명히 밝혀라 주석이 필요하다면 의도를 분명히 드러내지 못했다는 말이다. 그릇된 정보를 피하라 나름대로 널리 쓰이는 의미가 있는 단어를 다른 의미로 사용하지 말아라. ex) hp, aix, sco 의미 있게 구분하라 연속적인 숫자를 덧분인 이름(a1, a2, a3...)은 의도적인 이름과 정반대. Info나 Data는 a, an, the와 마찬가지로 의미가 불분명한 불용어. 발음하기 쉬운 이름을 사용하라 검색하기 쉬운 이름을 사용하라 인코딩을 피하라 자신의 기억력을 자랑하지 마라 전문가 프로그래머는 명료함이 최고 기발한 이름을 피하라 재미난 이름보다 명료한 이름을 선택하라 한 ..
[ 클린 코드 DAY 2 ] 오늘 읽은 범위 : 1장 깨끗한 코드 (p. 01 ~) 앞으로도 코드가 사라질 가망은 전혀 없다. 어느 수준에 이르면 코드의 도움 없이 요구사항을 상세하게 표현하기란 불가능하다. 추상화도 불가능하다. 기계가 실행할 정도로 상세하게 요구사항을 명시하는 작업이 프로그래밍이며, 그 결과가 바로 코드이다. 나쁜 코드는 개발 속도를 크게 떨어뜨리며, 나쁜 코드가 쌓일수록 팀 생산성은 떨어진다. 기한을 맞추는 유일한 방법은, 언제나 코드를 최대한 깨끗하게 유지하는 습관. 깨끗한 코드를 작성하려면 '청결'이라는 힘겹게 습득한 감각을 활용해 자잘한 기법들을 적용하는 절제와 규율이 필요하다. '코드 감각'이 있으면 좋은 코드와 나쁜 코드를 구분한다. 깨끗한 ..
최근에 딥 다이브를 읽었었는데 초반에는 읽을만했는데, 뒤로 갈수록 아직 나에겐 너무 어려워서 이해를 못 하겠더라 그러다 보니 계속 안 읽게 되어서 우선 딥한건 좀 접어두고, 먼저 핵심 개념을 파악하고 이해하기 위해 코어 자바스크립트를 구매하였다. 그리고 노마드코더의 개발 북클럽이 오늘부터 시작되어서, 클린 코드를 읽을 계기가 생겼다! 근데 클린 코드도 어려울 거 같은 느낌적 느낌이지만 클럽원들과 차근차근 스케줄표대로 뒤처지지 말고 따라가 보자! [ 클린 코드 DAY 1 ] 오늘 읽은 범위 : 추천사 & 들어가면서 (xxii ~) 소프트웨어 개발에서 아키텍처는 중요하다. 세세함에 주의를 기울이고, 깨끗한 코드를 작성해야 하는 이유 1. 큰 실무에서 실력을 쌓고 신뢰를 얻으..
* 스코프 * [ 스코프 ] 스코프는 Js를 포함한 모든 프로그래밍 언어의 기본적이며 중요한 개념. var 키워드로 선언한 변수와 let 또는 const 키워드로 선언한 변수의 스코프도 다르게 동작함. var var1 = 1; // 코드의 가장 바깥 영역에서 선언한 변수 if (true) { var var2 = 2; // 코드 블록 내에서 선언한 변수 if (true) { var var3 = 3; // 중첩된 코드 블록 내에서 선언한 변수 } } function foo() { var var4 = 4; // 함수 내에서 선언한 변수 function bar() { var var5 = 5; // 중첩된 함수 내에서 선언한 변수 } } console.log(var1); // 1 console.log(var2);..
* 함수 * JS에서 가장 중요한 핵심 개념. 일련의 과정을 문 (statement)으로 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의한 것 프로그래밍 언어의 함수도 입력을 받아서 출력을 내보낼 때, 함수 내부로 입력을 전달받는 변수를 매개변수 (parameter), 입력을 (argument), 출력을 반환 값(return value)이라 한다. 함수는 값이며, 여러 개 존재할 수 있으므로 특정 함수를 구별하기 위해 식별자인 함수 이름을 사용할 수 있음. 함수는 함수 정의를 통해 생성되는데, 함수 정의만으로 함수가 실행되는 것은 아니라, 함수를 호출하면 코드 블록에 담긴 문들이 일괄적으로 실행되고, 실행 결과, 즉 반환 값을 반환함. (함수 호출 : 인수를 매개변수를 통해 함수에 전달하면서 함수..