🌈 기술스택
일급 객체 (First Class Object)
일급 객체 (First Class Object)
2021.10.02First Class Object 자바스크립트를 공부하다 보면, 일급 객체(First Class Object)라는 용어를 종종 볼 수 있습니다. 어떤 의미에서 그냥 객체도 아니고, 일급 객체라고 부르는 것일까요? 자바스크립트에서는 다음 조건에 해당되는 객체를 모두 일급 객체라 합니다. 런타임 시점에 무명의 리터럴로 생성할 수 있다. 변수나 자료구조(배열/객체)에 할당할 수 있다. 함수의 매개변수로 전달할 수 있다. 함수의 반환값으로 사용할 수 있다. 자바스크립트에서 함수도 객체이기 때문에 묶어서 일급 객체라 부르겠습니다. 위 조건에 따라 코드로 구현하면 다음과 같습니다. // 1. 런타임 시점에 무명의 리터럴로 생성할 수 있으며, // 2. 변수나 자료구조(배열/객체)에 할당할 수 있다. const su..
script 태그는 어느 곳에 위치하는 것이 좋을까?
script 태그는 어느 곳에 위치하는 것이 좋을까?
2021.10.02자바스크립트를 불러오는 방법 HTML 문서를 작성하면서 자바스크립트 파일을 포함시켜야 할 때, 가장 기본적인 방법으로 head 안에 script 태그를 넣는 방법이 있습니다. 대충 아래와 같은 코드가 나오겠지요? 위 코드에 의해 우리는 HTML 문서에서 자바스크립트 코드를 불러와 사용할 수 있습니다. 하지만 이 코드에는 약간의 문제가 있는데, 이를 이해하기 위해서는 HTML 문서가 파싱(Parsing)되는 과정을 알아야 합니다. HTML 문서는 위에서부터 아래로 파싱이 진행되며, 중간에 script 태그를 만나면 파싱을 잠시 중단하고 스크립트를 먼저 불러오게 됩니다. 그리고 이 과정이 끝나면, 다시 HTML 파싱을 재개하는 식으로 동작합니다. 동작 과정을 그림으로 보면 다음과 같습니다. 언뜻 보기에는 큰..
호이스팅 (Hoisting)
호이스팅 (Hoisting)
2021.10.01Hoisting 🤔 호이스팅(Hoisting)은 변수나 함수의 선언문을 스코프의 최상단으로 끌어올리는 자바스크립트의 특별한 동작입니다. 이를 이해하기 위해서는 자바스크립트 엔진의 동작 과정이 소스를 평가하는 과정과 실행하는 런타임 과정으로 나뉘는 것을 알아야 합니다. 자바스크립트 엔진은 코드를 실행하기 전에 필요한 정보, 예를 들어 변수 선언을 포함한 모든 선언문(var, let, const, function, class 등)을 읽어 메모리에 등록합니다. 메모리에 등록된 식별자들은 평가 과정이 끝나고, 런타임이 진행되면서 값이 할당됩니다. 다음의 코드는 호이스팅이 발생합니다. console.log(x); // undefined var x = 'hello'; console.log(x); // hello v..
프로젝트를 멋지게 설명하는 README.md
프로젝트를 멋지게 설명하는 README.md
2021.09.25README.md README.md 파일은 깃허브 저장소를 돌아다니다 보면 흔히 볼 수 있는 문서 파일입니다. 이 파일은 프로젝트의 내용을 설명하기 위해 사용하는 파일로써 프로젝트가 어떤 목적에 의해 개발되었는지, 어떻게 사용할 수 있는지 등을 적어 놓습니다. README 문서의 내용은 저장소의 메인 페이지에 노출되기 때문에, 다소 귀찮더라도 신경 써서 작성하는 것이 좋습니다. GitHub는 저장소 최초 생성 시, README 파일을 작성할 수 있도록 안내하고 있습니다. 잘 작성된 README 문서의 예시로 facebook React 저장소를 가져와 봤습니다. 링크를 타고 들어가 보면 사진 속 내용 외에도 더 많은 내용을 확인할 수 있는데, React 뿐만 아니라 깃허브에 등록되어 있는 대부분의 프로젝트..
Branch의 종류와 사용법
Branch의 종류와 사용법
2021.09.25Git Branches Git Workflow는 수명이 항상 유지되는 메인 브랜치(master, develop)와 일정 기간 동안만 유지되는 보조 브랜치(feature, release, hofix) 총 5개의 브랜치를 사용합니다. 아래 그림은 "A Successful Git brancing model" 글에 첨부된 이미지를 가져온 것으로, 이보다 더 Git Workflow를 잘 설명한 그림은 없는 것 같습니다 😀 메인 브랜치 (Main Branch) master 브랜치는 배포 가능한 상태만을 관리하며, 커밋할 때는 태그를 사용해 배포(Release) 번호를 기록합니다. 위의 Workflow를 이용한 협업에서 작업한 결과물을 서브 브랜치가 아닌, master에 바로 올려 버..
느낌 있는 Commit Message 작성하기
느낌 있는 Commit Message 작성하기
2021.09.25Commit Message 커밋(Commit)은 프로젝트 내의 어떠한 파일들에 변화가 있는 시점을 메시지와 함께 저장하는 기능입니다. 커밋 시점은 개발자마다 다릅니다만, 개인적으로는 코드를 기능별(Feature)로 쪼개서 수시로 커밋하는 것을 선호하는 편입니다. 한 번에 여러가지를 해 놓은 이후 커밋하는 것보다, 특정 기능이나 역할 변경에 대해서만 커밋을 남기면, 이후 코드 리뷰가 용이하고 해당 부분만 언급하기도 좋습니다. 만약 너무 많은 커밋으로 인해 로그(Log)가 지저분할 때는 Merge나 Rebase 명령으로로 정리하면 됩니다. 좋은 커밋 메시지 위 사진은 Alibaba Fusion이라는 곳의 저장소에서 가져온 커밋 히스토리입니다. 이 외에도 대형 서비스를 운영하고 있는 기업들의 깃허브에서 커밋 ..
코드 관리를 위한 Git & GitHub
코드 관리를 위한 Git & GitHub
2021.09.25Git & GitHub Git은 컴퓨터 파일의 변경 사항을 추적하고, 여러 명의 사용자들과 해당 파일들을 공유하고, 수정할 수 있도록 도와주는 분산 버전 관리 시스템(Distributed Version Control System)입니다. 각 클라이언트와 서버는 추적하고 있는 파일의 마지막 변경 사항(스냅샷)만을 저장하지 않고, 저장소(디렉토리)와 함께 모든 히스토리(변경 내역)를 복제합니다. 그렇기 때문에 서버에서 문제가 발생하더라도, 분산되어 있는 클라이언트 중 하나를 통해 기존 상태를 완벽하게 복원할 수 있습니다. Git은 이와 같은 특성을 가지고 있기에 파일의 버전 관리가 용이하고, 각 버전을 통한 백업도 가능하며, 다른 개발자들과의 협업까지 가능합니다. 보통 Git을 통한 파일의 버전 관리는 주로..