Koans는 불교에서 유래된 단어인데, 결론을 내리기 전에 이게 왜 맞는지 깊게 고민한다는 의미라고 한다. 이번 과제는 왜 정답이 되는지 깊게 생각해보고, 지난 3주 동안 다룬 Javascript 핵심 개념과 주요 문법들을 되짚어보며 복습할 수 있는 좋은 기회가 되었다.
부트캠프에 들어오기 이전에 인강을 통해 Javascript에 대한 기본적인 문법을 어느 정도는 학습한 상태여서 3주 동안 따라가는 데 큰 무리가 없었지만, 이번 과제를 진행하면서 사소한 부분에서 내가 놓치고 있었던 개념들이 많았다는 것을 깨닫게 되었다. 아무래도 복습보다 예습에 치중한 결과인 것 같다. 과제 협업에서 부족한 모습을 보이고 싶지 않다는 생각에 다음날 학습 내용을 미리 공부하고는 했었는데, 매일매일 학습 내용이 빽빽하게 구성되어 있다보니 복습을 소홀히 하게 되어 배웠던 내용을 잊어버리게 된 것이다.
밑 빠진 독에 물 붓는 상황이 되자 코치진들의 말대로 예습보다는 복습을 우선하는 것이 옳은 학습 방법이라는 생각이 들었다. 또 내가 이해하지 못하거나 부족한 부분을 상대방에게 설명을 요청하는 용기는 계속 시도해봐야 생기는 것 같다. 아무래도 뒤로 갈수록 내가 이해하지 못하는 부분들은 점점 더 많아질 것이고, 상대방의 코드에서 어느 부분을 이해하지 못했는지 파악하고 설명을 요청하는 경험은 반드시 필요할 것이다. 앞으로는 부족한 점을 있는 그대로 받아들이고, 학습에 있어 예습보다는 복습에 더 비중을 두면서 협업 시 질문에 대한 두려움에 직면해야겠다.
1 + true === 2
===
해보면 같음. true
호이스팅
: Javascript는 위에서 아래로 크게 한 번 훑은 다음에 함수 선언식으로 표현되는 함수가 있다면 전부 위로 끌어올린 후 위에서부터 아래로 출력을 함default parameter
: 매개변수가 없을 때 매개변수의 초기값 설정function defaultParameter(num = 5) {
return num;
}
팩토리 함수A closure is the combination of a function and the lexical environment within which that function was declared. This environment consists of any local variables that were in-scope at the time the closure was created.
클로저는 함수와 함수가 선언된 어휘적 환경의 조합을 말한다.
이 환경은 클로저가 생성된 시점의 유효 범위 내에 있는 모든 지역 변수로 구성된다.
function factories
라고 부른다.slice
는 복사-붙여넣기라고 생각하면 됨 + 새로운 배열 리턴slice
범위가 대상 배열의 인덱스 범위를 넘어서거나 시작 인덱스와 끝 인덱스가 같으면, undefined가 아니라 빈 배열 리턴 []
shift()
나 pop()
은 배열을 반환하는 것이 아니라, 배열에서 빠지는 값을 반환unshift()
나 shift()
, pop()
, push()
, splice()
를 적용한 값을 새로운 변수에 할당해도, 배열에 변화가 적용됨Array.from()
을 적용해도, 인자 object의 value 값들로 이루어진 배열이 리턴됨Object.keys().length
: Object.keys 객체 안에 있는 key 값들만 모아서 배열로 만든 후, 그 길이를 재는 것Object.assign()
객체를 복사Object.assign()
을 통해 복사된 객체에 영향이 가지 않지만, 참조값을 수정하면 복사된 객체에도 영향이 감window.
접두사 없이도 참조가 가능하기 때문에(window.foo()라고 사용해도 됨), 생략하고 쓰는 것뿐임. method는 항상 '어떤 객체'의 method임this
가 없음. 화살표 함수 바로 바깥 범위에서 this를 찾음.repeat()
인자 안의 수만큼 앞의 string을 반복함 (반복 간 띄어쓰기 있음)arguments
는 모든 함수의 실행 시 자동으로 생성되는 '객체'function getAllParamsByArgumentsObj() {
return arguments;
}
Object.keys()
적용하면 '0', '1', '2'.. 리턴rest parameter
는 항상 배열임rest/spread
문법을 객체 분해에 적용하면 객체 리턴 const name = 'kim'
const age = 28
const person = {
name,
age,
level: 'Junior',
}
key: 다른 key
이렇게 작성하면 기존 key 이름이 콜론 뒤 다른 key 이름으로 바뀜 (key에 대한 value 값은 동일)