시작은 잡담으로☕️
단기적 공부계획을 세워봤다. 코드블럭 안 글씨체와.. 하이퍼링크 색을 바꿔야겠다. 너무 보기싫다.
나 혼자 주고받는 Small talk
1. 책 두 권을 샀다. 한 권은 코드스테이츠 커리큘럼 상 추천받은 '오늘도 개발자가 안된다고 말했다'이고 다른 한권은 모던 자바스크립트 Deep Dive - TIL하면서 구글링도 좋지만 책을 참고하여 개념을 보강하여 적으려고 한다.
어제 적었던 화살표함수나 목록에만 추가하고 미처 서술하지 못한 dot/bracket notation 내용도 오늘 보강하고자 한다.
2. this가 마구 나오기 시작한다. C#이 완전 객체지향 기반으로 만들어졌다는데 객체가 뭔지도 제대로 모르던 내가 코루틴(coroutine) 같은 함수 적용 좀 해보려고 찾아보다가 멘탈이 나간 이유가 있었다. 자바스크립트로 개념을 잡고 다시 코루틴 정복에 도전하면 의외로 쉬울지도?
3. 아!! 이 미친놈의 class!! class가 뭔지도 모르고 C#에서 쓰면서 문제를 해결하려고 검색하니 정말 무슨 말인지 아무것도 몰랐었는데 ES6와 다른점이 있겠지만(아예 다를지도..모른다만) 약간 감이 온다.(책을 조금 읽었을 뿐이지만 아예 다르다!!) 왜 자꾸 new new 하면서 새로만드는거야 이거 뭐야? 하면서 제대로 이해하지 못하고 쓴 내가.. 밉다.
NEW Keywords
기술 부채인 친구들
내장 고차 함수 - filter, map, reduce (forEach, find, sort, some, every)
1️⃣메서드 호출 ??
함수호출이나 다름없다. 다만 함수가 아닌 메서드를 호출하는 것.
2️⃣근데 메서드(Method)가 뭔데?
메서드란, 프로퍼티의 값으로 함수가 주어질 경우 일반적인 함수와 구분하기 위한 용어다!!
함수는 일급객체로서 프로퍼티의 값으로도 주어질 수 있음.
3️⃣프로토타입
어렴풋이 이해는되나 인스턴스가 나오기 시작하면 갑자기 머리가 아파진다.
4️⃣클로저
클로저란 함수와 함수가 선언된 어휘적 환경의 조합이다.
5️⃣클래스
솔직히 클로저 공부하다가 너무 관련 개념들 복습 및 독서량이 많아져서 클래스는 내일 정리하는게 나을 것 같다!
Following Kewords
기술 부채의 부채🤯
- MapReduce 학습하기 (MapReduce Model)
- 자바스크립트에서 커링(currying)과 클로저(closure)의 차이 이해하기 (js closure vs curry)
- 선언형 프로그래밍(declarative programming)과 절차형 프로그래밍(imperative programming)의 차이를 배열 메서드를 통해 이해하기 (js imperative vs declarative)
- 함수의 조합(function composition)에 대해 학습하기 (javascript function composition)
- (클로저 공부 전에 꼭 공부해야할 것 같아서) 실행 컨텍스트
- (실행 컨텍스트 에 블록스코프가 나오길래) let,const 키워드와 블록 레벨 스코프
- 스코프
6️⃣스코프 : 식별자가 유효한 범위
렉시컬 스코프 : 이전에 렉시컬 스코프가 정확하게 이해가 안되었는데 다음과 같은 예제로 조금 이해되는 부분이 생겼다.
일단, 프로그래밍 언어는 동적 스코프와 정적스코프(렉시컬스코프) 두 가지 방식 중 한 가지 방식으로 상위 스코프를 결정한다. 자바스크립트는 정적 스코프를 따른다!!
따라서 함수를 어디서 호출했는지가 아닌 함수가 정의된 시점에 상위 스코프가 결정된다.
var a = 1;
function first(){
var a = 5;
second();
}
function second(){
console.log(a);
}
// 아래 코드들의 결과는?
first();
second();
이 경우 동적,정적 개념이 없었어서 5와 1이 도출될 것이라고 동적인 스코프를 전제로 내가 예상을 했었다. 그러나 자바스크립트는 정의된 시점에 이미 스코프가 정해져있었고 second라는 함수의 상위 스코프는 전역 스코프 밖에 없다. 전역 스코프에서 참조할 수 있는 변수 a 는 1뿐이며 그래서 두 코드의 결과는 모두 1이다.
7️⃣ 블록 레벨 스코프
함수 코드블록만 지역스코프로 인정하는 var와 달리 let과 const는 모든 코드블록을 지역스코프로 인정하는 블록 레벨 스코프에 따른다.
8️⃣ 실행 컨텍스트
소스코드 - 코드평가 - 실행 컨텍스트 ... (오늘 안되겠다)
Review Contents
9️⃣ dot notation/bracket notation - 동적인 활용이란?
https://velog.io/@gil0127/%EA%B0%9D%EC%B2%B4-dot-notation-bracket-notation
객체 bracket notation을 사용해야 할 때
객체에는 dot notation과 bracket notation이 있다. 그러나, 반드시 bracket notation을 사용해야 하는 순간이 있는데, 바로 위의 예제처럼 '4-bc', '3 bc' 같이 앞에 숫자가 먼저 왔거나 중간에 띄어쓰기나 특수
velog.io
일단 링크만 걸어놓고..ㅋㅋㅋ
🔟화살표함수
화살표 함수의 활용법 보다는 이해가 잘 안됐던 부분들이 이제 조금 이해되어서 그 부분을 조금 적고, 다음에 더욱 보충해서 공부해야겠다.
먼저, 콜백함수 내부에서 this가 전역 객체를 가리키는 문제를 해결하는 데에 좋다고 한다.
또한, 화살표 함수는 인스턴스를 생성할 수 없고 그에 따라 프로토타입 프로퍼티도 없으며 프로토타입을 생성하지 않는다. 그리고 this와 관련된 부분은 this도 더 읽어보고 공부한 뒤 정리하는 것이 맞는 것 같다.
콜백함수를 사용할 때 표현도 간결하고 콜백 내부 this 문제까지 해결할 수 있다고하니 고차함수 연습 시 자주 사용해야겠다.
'study > TIL' 카테고리의 다른 글
[TIL No.17] React_CDD, CSS_in_js (0) | 2023.02.20 |
---|---|
[TIL No. 16] 피그마(Figma) 클론 (1) | 2023.02.17 |
[TIL No. 15] 피그마(Figma) 클론 준비 (0) | 2023.02.16 |
TIL No.14 재귀함수의 활용 (0) | 2023.02.15 |
TIL 1일차(FEB 29일차) (0) | 2023.01.13 |