Sparta/항해99

React 입문주차 S.A

또롱또 2022. 5. 20. 10:02
728x90

🐤 JavaScript의 자료형과 JavaScript만의 특성은 무엇일까 

  • 느슨한 타입(loosely typed)의 동적(dynamic) 언어
    • JavaScript의 변수는 모든 타입의 값으로 할당할수도 다시 할당할수도 있다. 
  • JavaScript 형변환
    • parseInt(), Number() 등을 사용해서 변수의 타입을 변경시킬수 있다.
  • ==, ===
    • 둘다 변수나 조건을 비교할때 쓰는데, == 는 유형을 비교하지않고, ===는 유형도 비교한다(더 엄격하다)
  • 느슨한 타입(loosely typed)의 동적(dynamic) 언어의 문제점은 무엇이고 보완할 수 있는 방법에는 무엇이 있을지 생각해보세요.
    • 동적인 언어는 Runtime에서밖에 확인할수 없기때문에, 에러를 발견하기가 어렵다. 
    • 보완하기 위해서 Typescript가 나왔다.
  • undefined와 null의 미세한 차이들을 비교해보세요.
    • null은 그냥 nothing, 즉 아무것도 없는경우다. null로 선언된 변수는 그 어떤 객체도 가르키지 않는다.
    • undefined는 전역객체의 속성중 하나로, 값이 주어지지 않은 변수에 자동으로 할당된다. 

 

🐤 JavaScript 객체와 불변성이란 ?

 

  • 기본형 데이터와 참조형 데이터
    • 기본형에는 바로 값을 그대로 할당, 참조형에는 값이 저장된 주소값을 할당.
  • 불변 객체를 만드는 방법
    • const, Object.freeze()
  • 얕은 복사와 깊은 복사
    • 얕은복사: 값만 복사해서 준다
    • 깊은복사: 값이 저장된 주소, 즉 메모리의 주소도 복사함

 

🐤 호이스팅과 TDZ는 무엇일까 ?

  • 스코프, 호이스팅, TDZ
    • 전역 스코프 : 코드의 어느곳에서든 참조할 수 있는 범위. 이곳에 선언된 변수는 전역 변수가 되며 코드 어디에서든 참조가 가능.
    • 지역 스코프 : 코드블록, 함수내에서의 범위이며 자기자신과 하위 범위에서만 참조. 선언된 변수는 지역 변수가 됨.
    • 호이스팅: 인터프리터가 변수와 함수의 메모리 공간을 선언전에 미리 할당하는 것.
    • TDZ: temporal dead zone, 변수의 선언과 변수의 초기화 사이의 변수에 접근할 수 없는 지점.
  • 함수 선언문과 함수 표현식에서 호이스팅 방식의 차이
    • var, 함수선언문은 호이스팅 대상이고, let, const, 함수표현식은 호이스팅 대상이 아님
  • 실행 컨텍스트와 콜 스택
    • 실행 컨텍스트: 코드를 실행하기 위해 필요한 환경
    • 콜 스택: 함수 호출을 기록하기 위해 사용하는 우물 형태의 데이터 구조
  • 스코프 체인, 변수 은닉화
    • 스코프 체인: 해당 코드의 유효 범위 안에 있는 변수를 정의하는 객체의 체인
    • 변수 은닉화: 클로저를 사용해야한다. 클로저를하게 되면 가질 수 있는 장점들이 있기 때문에 메모리 누수문제만 해결 할 수 있다면 클로저를 사용하는 것이 좋다.

 

 

 🐤 실습 과제

 

  • 콘솔에 찍힐 b 값을 예상해보고, 어디에서 선언된 “b”가 몇번째 라인에서 호출한 console.log에 찍혔는지, 왜 그런지 설명해보세요. 주석을 풀어보고 오류가 난다면 왜 오류가 나는 지 설명하고 오류를 수정해보세요. 
    • a가 함수 hi 안에서 선언되었고, 스코프 밖에서 불러서 오류가 난다.
let b = 1;

function hi () {

const a = 1;

let b = 100;

b++;

console.log(a,b);

}

console.log(a);

console.log(b);

hi();

console.log(b);
728x90

'Sparta > 항해99' 카테고리의 다른 글

항해 14일차 (일요일)  (0) 2022.05.21
항해 - 13일차  (0) 2022.05.20
항해 99 - 12일차(주특기 입문 시작)  (0) 2022.05.19
항해 99 - 11일차(WIL)  (0) 2022.05.18
항해 99 - 10일차  (0) 2022.05.18