JS의 자료구조
const myMap = new Map();
myMap.set('myKey', 'myValue');
myMap.get('myKey'); // myValue 를 반환
console.log(myMap.size); // 길이 반환
console.log(myMap.has("yourKey")); // key값 기반 검색
const mySet = new Set();
mySet.add("value1");
console.log(mySet.size);
console.log(mySet.has("yourValue"));
(1) 복제방식 : 값이 담긴 주소값의 복제 / 값이 담긴 주소값들의 묶음을 가리키는 주소값 복제
(2) 불변성 여부 : 불변성 / 가변
숫자 8 byte고정. 영문 1 byte, 한글 2byte
let x = 10; // 8byte
js에서 메모리와 관련하여,
변수와 데이터 영역이 분리되어 있다.
ex.
let x = 10; // 8byte
에 대해서,
"데이터 영역" : 5008번 주소값에 데이터값 "10"이 저장됨.
"변수 영역" : 1004번 주소값에 변수 x와 데이터값 10이 담긴 데이터영역 주소값 5008이 저장됨.
이 때,
x = 7; // 8byte
x에 대한 값의 변경이 일어나면,
"데이터 영역"에 새로운 빈 공간 5009번 주소값에 데이터값 7을 저장하고,
변수 영역의 변수 x가 저장되어 있던 1004번 주소값은 데이터값 10이 아니라 데이터값 7을 저장한 데이터 주소 공간 5009번을 가리킨다.
이 경우 데이터값 10이 저장된 5008번 주소에 대해서,
가비지 컬렉터 GC의 reference check을 통해 메모리를 회수한다.
실행할 코드에 제공할 환경 정보들을 모은 객체
동일 환경에 있는 코드를 실행할 때 필요한 환경 정보들을 모아 컨텍스트를 구성하고 이것을 call stack에 적재.
record 식별자 정보를 갖고 있다.
outer 외부 환경 정보를 갖고 있다.
snapshot 유지 (실시간 변경 x)
ve와 동일하게 record와 outer를 가진다.
변경사항에 대해 실시간 반영을 한다.
식별 정보를 맨 위로 끌어올리는 변수 정보 수집 과정
식별자의 유효 범위
-> 스코프 체인 : 식별자의 유효범위를 안에서부터 바깥으로 검색 (inner -> outer -> global)
프로젝트 진행
방어도는 피격 시 데미지 경감을 도와준다.
데미지 계산 : max(데미지 총량 - 방어도, 0)
ex. 기본 방어도 5 몬스터 데미지 20 => 20 - 5 = 15의 피해
기본 방어도 5 방어 액션을 통해 얻은 추가방어도 15 몬스터 데미지 16 => max((15 - (5+15)) , 0) = 0 피해 입지 않음
기본 방어도 5 몬스터 데미지 24, 완벽한 방어 발동 => 0 피해를 입지 않음