클로저(closure)란?JavaScript의 매우 강력한 특성으로, 독립적인 변수를 참조하는 함수클로저의 필요성 JS는 함수 내부에서 함수 외부에 있는 변수에 접근할 수 있다. 만약에 함수 내부에서 전역 외부 변수를 참조했다면, 전역 변수는 언제든지 누구나 접근할 수 있고 변경할 수 있기 때문에, 많은 부작용을 유발해 오류의 원인이 될 수 있다.따라서 함수 내에서 상태를 유지하는 변수를 사용할 필요성이 있다.다음의 계산기 함수처럼 말이다. function makeCounter() { let count = 0; return function() { return count++; };}let counter = makeCounter();alert( counter() ); // 0alert( count..
호이스팅이란?JavaScript 호이스팅은 인터프리터가 코드를 실행하기 전에 함수, 변수, 클래스 또는 임포트(import)의 선언문을 해당 범위의 맨 위로 끌어올리는(hoisted) 현상ex )function sayHi() { phrase = "Hello"; console.log(phrase); var phrase;}sayHi(); //Hellovar phrase가 위로 이동한 것(아래 코드)처럼 출력된다.function sayHi() { var phrase; phrase = "Hello"; console.log(phrase);}sayHi(); //Hello왜 호이스팅은 일어나는가- 역사적 이유브랜든 아이크(JS의 창시자)는 var 호이스팅이 의도치 않은 것이라는 점을 명확히 하는 후속 트윗..
Fast - foward 방식*Cn은 커밋이고, 숫자 n은 커밋의 순서를 나타낸다.$ git checkout master$ git merge hotfixUpdating f42c576..3a0874cFast-forward index.html | 2 ++ 1 file changed, 2 insertions(+)master 브랜치에서 hotfix 브랜치를 merge한다.- 명령어 실행 결과Merge 메시지에서 “fast-forward” 를 확인할 수 있다. hotfix 브랜치가 가리키는 C4 커밋이 C2커밋에 기반한 브랜치이기 때문에 브랜치 포인터는 Merge 과정 없이 그저 최신 커밋(C4)으로 이동한다. 이런 Merge 방식을 “Fast forward” 라고 부른다. 즉, A 브랜치에서 다른 B 브랜치를 ..
Git CLI 준비하기Git CLI를 사용하기 위해서는 기본 shell을 zsh 또는 bash로 설정하는 것이 필요하다.Git CLI 명령어git init : 저장소 생성- 현재 디렉토리를 Git 저장소로 생성- .git 폴더(숨김 폴더)가 생성됨git status : 현재 상태 확인- 변경된 파일명이 빨간색으로 보일 경우 Working Directory 상태- 변경된 파일명이 초록색으로 보일 경우 Staging Area 상태- nothing to commit, working tree clean의 경우 변경 내용이 없음을 나타냄git add : 파일의 변경 사항을 index(Staging Area)에 추가- git add * : 변경 내용이 있는 모든 파일을 Staging Area에 추가하기git res..
시간순 VCS(버전 관리 시스템)과 Git의 차이 시간순 VCS각 파일의 변화를 시간순으로 관리하면서 파일들의 집합을 관리 Git 데이터를 파일 시스템 스냅샷의 연속으로 취급하여, 프로젝트의 변경점을 중요시한다. 즉 파일이 변경되지 않았다면 git은 그 상태를 반영하지 않는다. 이를테면, 빈 폴더를 commit할 수 없다. Git의 세가지 영역다음과 같이 git은 세가지 영역을 가지고 있다.Working Directory : 실제로 파일들이 존재하고 작업이 이루어지는 곳untracked: Add된 적 없는 파일, ignore 된 파일tracked: Add된 적 있고 변경내역이 있는 파일git add 명령어로 Staging area로 이동 Staging Area(인덱스) : 커밋을 위한 준비단계. 변경된 ..
