[코어 자바스크립트] 1장 - 데이터 타입

Yongwoo Cho·2022년 6월 16일
0

TIL

목록 보기
92/98
post-thumbnail

1장 - 데이터 타입

✔️ 데이터 타입의 종류

  • privitive type(원시 타입)

    Number, String, Boolean, null , undefined, Symbol

  • Reference type(참조 타입)

    Object(Array, Function, Date, RegExp, Map, Set)

❓ 변수와 데이터를 별도의 공간에 나누어 저장하는 이유는?

👉 효율적으로 문자열 데이터의 변환을 처리할 수 있기 때문이다

✔️ 변수와 식별자

  • 변수 : 변경 가능한 데이터가 담길 수 있는 공간
  • 식별자 : 그 변수의 이름

✔️ 변수 vs 상수

변수와 상수를 구분하는 성질은 '변경 가능성'이다.
변수와 상수를 구분 짓는 변경 가능성의 대상은 변수 영역 메모리이다. 불변성 여부를 구분할 때의 변경 가능성의 대상은 데이터 영역 메모리이다.
원시타입은 모두 불변값이다.

❓ 기본형 데이터와 참조형 데이터의 차이점은?

👉 참조형 데이터는 객체의 변수 영역이 별도로 존재한다. 따라서 참조형 데이터의 프로퍼티 재할당이 가능하다

✔️ 얕은 복사 vs 깊은 복사

얕은 복사 : 바로 아래 단계의 값만 복사하는 방법

const copyObject = (target) => {
  const result = {};
  for (let prop in target) {
    result[prop] = target[prop];
  }
  return result;
};

깊은 복사 : 내부의 모든 값들을 하나하나 찾아서 전부 복사하는 방법

const copyObjectDeep = (target) => {
  const result = {};
  if (typeof target === "object" && target !== null) {
    for (let prop in target) {
      result[prop] = copyObjectDeep(target[prop]);
    }
  } else {
    result = target;
  }
  return result;
};

// 객체 -> JSON 문법으로 표현된 문자열 -> JSON 객체
const copyObjectViaJSON = (target) => {
  return JSON.parse(JSON.stringify(target));
};

✔️ undefined vs null

자바스크립트에는 '없음'을 나타내는 값이 두 가지가 있다. 바로 undefined와 null이다.

자바스크립트 엔진이 undefined를 반환하는 경우

1) 값을 대입하지 않은 변수, 즉 데이터 영역의 메모리 주소를 지정하지 않은 식별자에 접근할 때

var a;
console.log(a); // undefined

2) 객체 내부의 존재하지 않은 프로퍼티에 접근할 때

var obj = { a: 1};
console.log(obj.b); // undefined

3) return 문이 없거나 호출되지 않는 함수의 실행 결과

var func = function() {};
var c = func();
console.log(c); // undefined

❗ 배열에서 비어있는 요소와 undefined를 할당 요소는 다르다. 비어있는 요소는 순회와 관련된 많은 배열 메서드들의 순회 대상에서 제외된다.

❗ '비어있음'을 명시적으로 나타내고 싶을 때는 undefined가 아닌 null을 쓰면 된다.

profile
Frontend 개발자입니다 😎

0개의 댓글