1주차_이나영_회고록 - hyeone999/Docs-JS_deepDive_Study GitHub Wiki

1주차 회고


딥다이브 책을 활용하여 변수, 표현식과 문, 데이터 타입에 대해 공부해봤습니다. JS의 기초를 알아보며, 코테까지 준비를 해보려고 합니다. 프론트엔드같은 경우 Python이 아닌 JavaScript로 언어가 진행될 수 있다는 이야기를 들어 좀 더 열심히 파고 들어야겠다는 생각이 들었습니다. JS의 기본기를 탄탄하게 스터디를 통해 키워나가 알고리즘까지 공부하여 성장해나가고 싶습니다 :)


1. 변수

var // 중복선언 , 재할당 O
let // 중복선언 X, 재할당 O
const  // 중복선언, 재할당 X

변수를 지정할 때 총 3가지 중 하나로 가능하지만 const를 주로 사용해야 합니다.

호이스팅

변수 및 함수 선언(이름)이 로컬 범위(유효범위)의 맨 위로 들어올려지거나 끌어올려지는 경우

console.log(greeting);
var greeting = 'hello'; // undefined

console.log(greeting);
let greeting = 'hi'; // Error const도 동일

위의 let,const는 호이스팅이 불가하며 TDZ가 발생한다.

타입 유효 참조범위
var 함수 레벨 스코프
let,const 블록 레벨 스코프

2. 표현식과 문

const a = 10+20
// a는 변수
// 10+20은 표현식 
// 10, 20, 30 은 숫자 리터럴
// 30은 값

표현식과 문을 공부하면서 제일 어려웠던 부분은 리터럴의 존재였습니다. 하지만 위의 예시와 함께 정리하니 좀 더 이해가 되는 거 같습니다.


3. 데이터 타입

데이터는 타입별로 형태가 달라진다. 하지만 타입을 명시하지도 않아도 되는 점이 파이썬이랑 비교해봤을 때 다르다. 타입을 확인하고 싶다면 typeof를 이용하여 타입을 확인할 수 있다.


JavaScript 원시 타입 (Primitive Types)

타입 설명
string 문자열
number 숫자 값
boolean truefalse
null 의도적으로 '값이 없음'을 나타냄
undefined 초기화되지 않은 변수의 기본값
symbol 변경 불가능한 유일한 값을 생성할 때 사용. 외부로 노출되지 않음

JavaScript 참조 타입 (Reference Types)

타입 설명
object 객체를 나타냄
array 배열을 나타냄
function 함수를 나타냄
class 클래스를 나타냄

메모리 저장 방식 비교

구분 저장 위치 변수에 저장되는 값 특징
원시 타입 Call Stack 실제 데이터 값 고정된 크기, 불변성 있음
참조 타입 Stack + Heap Heap에 저장된 데이터의 참조(주소) 값 크기 유동적, 데이터는 Heap에 저장

// 문자열 String
const name = 'han';
// Number
const age = 30;
// Boolean
const hasJob = true;
// null
const car = null;
// undefined
let anything;
//Symbol
const sym = Symbol();

// 참조타입
// Array 배열
const hobbies = ['walking', 'books'];
// Object 객체
const address = {
    province :'경기도',
    city: '구리시'
}

console.log(typeof address);

느낀점

차주에는 책도 왔으니깐 집중적으로 공부를 해봐야할 거 같다. 책을 봤을 때 굉장히 두꺼웠지만 그만큼의 지식이 담겨져 있으니 '왜일까'싶으면 검색하고 안을 파고 드는 것도 스터디에 도움될 거 같다. 스터디 진행했을 때 질문과 예제를 좀 많이 챙겨봐야겠다. 그래야 스터디원이랑도 공유가 되고 흐지부지 지식이 아닌 확고한 지식으로 스터디를 마무리할 수 있을 거 같다.