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