221029 TIL

오늘 한 일

자바스크립트 완벽 가이드 ~p68까지 학습

학습 내용

전역 객체

  • 자바스크립트 인터프리터를 시작할 때, 또는 웹 브라우저가 새 페이지를 로드할 때마다 새 전역 객체를 생성한다.
  • 전역객체가 가진 프로퍼티
    • undefined, Infinity, NaN같은 전역 상수
    • isNaN(), parseInt(), eval()같은 전역 함수
    • Date(), RegExp(), String(), Object(), Array() 같은 생성자 함수
    • Math와 JSON같은 전역 객체
    • 이외에도 여러 프로퍼티가 존재한다.
  • Node의 경우 전역 객체의 이름이 global, Window의 경우 window 프로퍼티를 통해 전역 객체를 참조한다.

불변인 기본 값과 가변인 객체 참조

  • 기본값은 불변이다.
    • 문자열의 경우 메서드가 문자열을 수정하는 것처럼 보이지만 새 문자열 값을 반환하는 것이다.
  • 객체는 가변이다.
    • 값으로 비교하지 않으며, 두 객체의 프로퍼티와 값이 같다고 해서 같은 객체로 인식하지 않는다.
      let o = {x: 1}, p = {x: 1}; // 프로퍼티가 같지만
      o === p // false: 별개의 객체는 일치하지 않는다.
      let a = [], b = []; // 빈 배열이지만
      a == b // fasle: 별개의 배열은 일치하지 않는다.
    
    • 두 값이 같은 객체를 참조할 때에 성립한다.
      let a = [];
      let b = a;
      b[0] = 1;
      a[0]; // 1: b의 값을 참조한다.
      a === b; // true
    

타입 변환

  • 자바스크립트는 암시적 변환을 허용한다.
  • “===”(일치 연산자)는 두 피연사가 다른 타입이면 같지 않다고 판단한다.

변수 선언과 할당

  • ES6 이후 let과 const 키워드가 등장했다.
  • let의 값은 바꿀 수 있지만 const는 값 할당 후 변경이 불가능하다.

변수와 상수 스코프

  • let과 const로 선언한 변수와 상수는 블록 스코프를 가진다.
    • 클래스와 함수, if/else, while 등…

분해 할당

  • 분해 할당(destructuring assignment)는 선언과 할당을 합친 문법이다.
let [x, y] = [1, 2] // let x=1, y=2