IT/Study

몰랐던 내용 정리 (상시 업데이트)

프티 2021. 11. 26. 16:50
반응형

JS

  • 인스턴스
    클래스나 프로토 타입으로 만들어낸 것.
    생성된 인스턴스의 원래 객체인 클래스 또는 프로토타입이 가지고 있는 프로퍼티와 메서드를 모두 상속받는다는 특징이 있다.
  • export default 모듈
    모듈을 내보낼 때 default 키워드가 붙으면 해당 모듈엔 하나의 개체만 존재한다고 명시하는 것이다.
    default가 있으면 모듈을 불러올 때 중괄호로 감싸지 않고 기입이 가능하다.
  • 프로토타입 오브젝트의 메소드를 사용할 때에,
    가장 가까운 프로토타입 오브젝트의 메서드를 먼저 참고한다. => 메서드 오버라이드
  • Ajax : 비동기 처리를 가능하게 만듬
    V8 : 서버 로직 상당수를 브라우저 로직으로 넘어오게 하여 프런트 엔드 개발자에 대한 인식이 달라짐
    nodeJS : 프론트 엔드와 백엔드를 모두 다룰 수 있는 언어가 되었음
    현재는 크로스 플랫폼 언어가 되었음
  • 자바스크립트 : ECMAScript + 클라이언트 사이드 Web API
  • 변수 이름에 매핑된 메모리 주소를 통해 메모리 공간에 접근함. 매핑 정보 또한 메모리에 저장됨
    이렇게 메모리 주소를 통해 값을 식별하는 것을 식별자라고 함.
  • var - 함수 레벨 스코프
    변수 이름을 등록하고 메모리를 할당할 공간을 확보함
    할당되기 전까지 undefined가 암묵적으로 할당됨
  • 키워드 : 자신이 수행해야 할 약속된 동작을 수행함
  • 변수 선언 - 1. 엔진에 변수의 존재를 알림 -> 메모리 공간 확보
                      2. undefined를 할당하여 초기화
  • 선언하지 않은 값을 참조하면 reference error 발생
  • 자바스크립트 엔진은 소스 코드를 한 줄 한 줄마다 실행하는데 그 이전에 소스코드 평가 과정이 있음.
    이 과정에서 모든 선언문이 실행된다. -> 변수의 호이 스팅
    변수 선언 -> 평가과정, 값의 할당 -> 소스 코드 실행
  • 재할당이란 이미 값을 가진 변수에 새로운 값을 할당하는 것을 말한다.
    메모리 공간의 내용을 덮어 씌우는 것이 아닌 새로운 메모리 공간을 확보하고 그곳에 새로운 값이 들어가게 됨.
    이때 이전 값을 참조하는 식별자가 없는 경우에 가비지 콜렉터가 메모리를 해제시킴. -> 메모리 누수 방지
  • 유사 배열 객체
    index를 가지고, length 프로퍼티를 가짐
    원시 값을 객체처럼 사용하면 원시 값을 감싸는 래퍼 객체로 자동 변환됨
    하지만 원시 값은 불변함. 이는 곧 데이터의 신뢰성을 보장함
  • 값에 의한 전달
    let score = 80;
    let copy = score;

    같은 값을 참조하게 됨.
    let score = 80;
    let copy = score;
    
    score = 100;
    copy = ?​
    새로운 메모리 공간에 100이 저장되고 score는 100에 재 할당되므로, copy는 여전히 80 임.
  •  
  • 변경 가능한 값
    객체를 변수가 할당 받으면, 변수는 객체 값에 대한 참조값을 할당받는다.
    이때 변수는 객체를 참조하고 있다. 또는 변수는 객체를 가리키고 있다. 라고 한다.
    객체는 변경 가능한 값이므로 메모리에 저장된 객체를 직접 수정할 수 있다.
    이는 메모리의 효율적 소비가 쉽고 성능이 좋은 방식이다.

    단점) 여러 개의 식별자가 하나의 객체를 공유할 수 있다는 것
  • 참조에  의한 전달
    객체 값 수정시 서로 영향을 주고받음

    얕은 복사 : a === b (true) -> 참조 값을 복사한 것
    깊은 복사 : a === b (false) -> 원시값처럼 완전한 복사를 한 것

 

 

반응형

'IT > Study' 카테고리의 다른 글

Renderer Process  (0) 2022.05.21
Redux 내부 구조  (0) 2022.01.29
동적 타입 언어  (0) 2021.11.23
객체 지향 프로그래밍 기본 용어  (0) 2021.11.23
임베디드(Embeded) 정의  (0) 2021.04.13