프로그래머스 데브코스 2일차다.
어제부터 TIL을 쓰고 싶었지만 강의 내용을 숙지하기 바빠 쓰지 못했기에
1일차+2일차의 학습 내용을 합쳐서 쓰려한다.
1주차에는 Javascript의 주요 문법과 개념을 배우고 있다.
이미 배운 적이 있는 개념들이지만 그 당시에 잘 이해하지 못했던 점들을 짚고 넘어가며 완벽히 숙지해가는 중이다.
:함수 안에 있는 선언들을 모두 끌어올려서 해당 함수 유효 범위의 최상단에 선언되는 것. (할당이나 함수 실행문은 X)
= var와 함수선언문에서만 발생. 오류가 생길 수 있어 최대한 피하는 게 좋다.
참고 - https://gmlwjd9405.github.io/2019/04/22/javascript-hoisting.html
식별자 → 메모리 주소 → 값
let variable = 126
let variable2 = variable
식별자(변수명)에는 메모리 주소가 들어가고 variable === 메모리 주소이기 때문에
variable2에는 variable과 같은 메모리 주소가 할당되고, 같은 값을 가리키게 된다.
값을 변경할 때마다 새로운 메모리 주소가 할당된다.
let variable = 126
variable = variable+1
값이 바뀌었기 때문에 메모리 주소도 바뀜, let variable2 는 변하지 않는다.
(기존 변수를 이용해 연산할 시 주소가 아닌, 값으로 인식된다고 생각하면 편함)
4. 메모리 모델인 콜스택과 힙
콜스택 - 원시타입의 선언된 변수와 함수들의 메모리 공간
힙 - 참조 타입의 변수들의 메모리 공간
*주의 - 원시 타입과 참조 타입 모두 값을 재할당 할 시 메모리주소가 바뀜
참고 - https://junwoo45.github.io/2019-11-04-memory_model/
스코프
:변수의 유효범위
스코프 체인
:내부스코프 → 외부 스코프 → 외부스코프의 외부스코프... 로 이어지는 참조 관계
자신에게 없는 변수를 외부로 차례로 거슬러올라가 그 변수가 있는 스코프에서 해당 변수를 참조한다.
클로저
:이미 없어져 그 변수를 기억하고 있는 함수에서만 사용 가능한 변수
[구현 방법]
함수 내부에 선언된 변수, 함수를 사용한 함수를 리턴해 사용 가능
은닉화
:클로저를 이용해 내부 변수와 함수를 숨기는 것.
[구현 방법]
객체를 이용해 내부 변수, 함수가 쓰여진 함수를 리턴한다
객체를 이용해 key:value형태로 내부 함수, 변수가 사용된 함수를 반환하면 객체의 요소로만 접근 가능하고 원본을 수정할 수 없다.
자바스크립트는 멀티-패러다임 언어
모든 객체는 프로토타입 객체를 가지고 있다
=> 프로토타입 객체는 상속할 것들이 저장되는 장소이다.
객체가 있지만 프로토타입이 필요한 이유?
객체를 생성할 때마다 생성자 함수에 정의되어있는 내부 변수, 함수들이 그대로 생성되어, 같은 내용인 것들이 불필요하게 반복적으로 생겨 메모리가 낭비된다.
처음 배워보기도 하고, 아직 네트워크 통신에 대해 잘 몰라서 이해가 되지 않았다.
다음 주 cs스터디 주제로 정해서 깊게 공부한 후 포스팅해야겠다.