오늘 배운 것
- javascript와 프론트엔드 개발 개요
- 변수, 상수, 자료형
- 메모리와 가비지컬렉터
- 표현식과 연산자
- 흐름제어
- 배열과 객체 기본 메소드
- 스코프와 클로저
어려웠던 내용
궁금한 내용 / 부족한내용
- 클로저란
- 실제 개발환경에서 어떻게 사용되고 있고 사용할 수 있을지
- Data-Flow 방식(함수형 프로그래밍)의 장점과 적용사례들
느낀점
- 모든 강의가 세부적인 내용까지 다루기보다는 해당 개념들을 간단히 설명해주는 방식으로 진행되었다. 알고 있었던 부분이 많았지만, 또 클로저와 함수형 프로그래밍 부분은 낯설게 느껴지기도 하였다.
- 프론트엔드의 분야가 정말 다양하다는 것을 다시 한 번 깨닫게 되었다.
- 그래도 한 번씩은 다 살펴본 개념이라는 것에서 그동안 공부 열심히 해왔구나! 더 열심히 해야겠다! 라는 다짐을 하게 되었다.

참고링크
강의노트
javascript와 프론트엔드 개발 개요
- js 탄생배경
- html에 동적인 기능을 추가하기 위해 빠르게 개발된 언어
- by 팀 버너스 리, 브랜든 아이크
- js로 무엇을 할 수 있을까
- 서버개발 -
nodejs
,NestJS
,Express
- 앱개발 -
ReactNative
,NativeScript
,Cordova
, ... - 프론트엔드 개발
React
,Vue
,Angular
,JQuery
,Backbone.js
,- 다양한 프론트엔드 개발 분야

- 브라우저 동작 원리
통신
-렌더링
-스크립트 실행
- 프론트엔드 개발자의 역할
- 브라우저에서 동작하는 UI를 개발하는 일
- 디자인과 백엔드와의 의존도가 높다.
- 디자인에서 목업,와이어프레임을 받고,
- 백엔드에서는 데이터, API를 받는다.
- 마지막에 작업하기 때문에
협업
과일정을 잘 맞추는 것
이 중요한 직무 - 6가지 핵심 역량
- 커뮤니케이션
- UI
- 네트워크
- 보안
- 브라우저
- 디자인
↔ CS소홀, CSS안하기, 코더가 되는 것
변수, 상수, 자료형 그리고 메모리
- 변수
- 프로그래밍에서의 변수는
메모리에 할당한 값
을 의미 - 변수 선언 키워드
var
와let
- 상수
- 상수는
변하지 않는 값
- 한 번 선언된 이후 변할 수 없는 값
- 자료형
- String (
“”
,‘’
,``
) - Number (
소수점
,실수
,NaN
,Inf
) - Boolean(
true
,false
) - Object > Array
- Function
- Undefined
- Null
메모리
- 메모리
할당
→사용
→해제
- 할당
- 변수 선언 시 메모리에 할당
- 사용
- 할당된 메모리에 값을 넣어 사용
- 해제
- js에서는 GarbageCollector를 통해 해제
식별자
는값이 아닌 메모리 주소를 참조
하고 있다.
- js엔진의 가상머신의 메모리 구현
- Heap -
Object 참조타입
- 동적인 크기 변경 가능
- CallStack -
원시타입
- 가비지컬렉터의 Mark and Sweep 알고리즘
- 닿을 수 없는 주소를 필요없는 주소로 정의하여 지워버리는 알고리즘
- 루트노드로 부터 참조되든 모든 객체들을 순회하며, 순회 이후 방문하지 않은 객체들을 삭제한다.
표현식과 연산자
- 표현식
- 표현식(
Expressions
) vs 문장(Statesment
)
- 연산자
- 할당연산자 (
=
) - 비교연산자 (
==
,===
) - 산술연산자 (
+
,-
,*
,/
) - 논리연산자 (
||
,&&
) - 삼항연산자 (
? :
) - 관계연산자 (
in
) - 객체에 해당 속성이 있는지 확인하기 위한 연산자
const obj = {name: "soo", height: 177} "name" in obj; // true "gender" in obj; // false
- 피연산자의 타입을 반환하는 연산자
흐름제어
- Control Flow
- 조건이나 반복을 통해 상태를 제어하는 것
Goto
,if-then-else
,switch-case
,for-while
- Data Flow
- 함수형 프로그래밍에서 데이터를 중심으로 제어하는 방식
배열과 객체
- 배열
- 연관된 데이터를 연속적인 형태로 저장하는 데이터 타입 (ex. 출석부)
- 생성
new Array(배열의 크기)
로 생성- fill 메소드를 통한 배열의 요소 생성
- Array.from(Array(5), (value, index) ⇒ () )
join
,reverse
,concat
- 끝 요소 추가/제거 -
push
,pop
- 첫 요소 추가/제거 -
unshift
,shift
- 배열 자르기 -
slice
,splice
for .. of ...
를 통한 배열 순회
- 객체
- 여러 값을 키-값 형태로 결합시킨 데이터 타입 (ex. 사물함)
- 생성
new Object
,{ }
- 추가
obj[”email”] = value
obj.email = value
- 삭제
delete obj.email
- 조회
Object.keys(obj)
- 키 조회Object.valuse(obj)
- 값 조회Object.entries(obj)
- 키와값 동시 조회
스코프와 클로저
- 스코프
- 유효범위, 변수가 어느 범위까지 참조하는지를 의미
- var를 사용하면 안되는 이유 - 스코프
- 클로저
- 함수가 선언된 환경의 스코프를 기억하여, 함수가 스코프 밖에서 실행될 때에도 기억한 스코프에 접근할 수 있게 만드는 문법
- 사용 이유
- 은닉화
- 알기힘든 버그 수정을 위해