JavaScript 데이터 타입에 대해 설명해주세요.

최관수·2023년 9월 12일
0

기술면접

목록 보기
22/58

내용 정리

  • 자바스크립트는 기본적으로 동적 타입 언어로 변수의 타입 지정 없이 값이 할당되는 과정에서 자동으로 변수의 타입이 유연하게 결정됩니다. 우선 크게 자바스크립트의 데이터 타입은 원시 타입과 참조 타입으로 나뉩니다. 원시 타입에는 string, number, boolean, null, undefined, symbol(ES6에서 추가) 이 있고, 참조 타입은 원시 타입을 제외한 거의 모든 것(object, array, function, 정규표현식 등)이라고 볼 수 있습니다. 참조 타입에서의 객체 개념은 식별자로 참조할 수 있는 메모리 상의 값을 말한다고 볼 수 있습니다.

꼬리 질문

  • 유사 배열에 대해서 간략하게 설명해주실 수 있나요?
    • 예컨대 문자열도 일종의 배열처럼 인덱스를 통해 접근할 수 있는데 이와 같은 특성을 갖는 데이터를 유사 배열이라고 합니다.
  • 유사 배열의 인덱스를 통해서 값을 변경할 수 있나요?
    • 아예 새로운 문자열을 재할당하는 것은 가능하나 유사 배열의 인덱스로 접근해서 값을 변경하는 것은 불가능합니다.
  • boolean 타입의 false 외에 false로 간주되는 타입은 어떤 게 있을까요?
    • 비어 있는 문자열과 null, undefined, 숫자 0은 false로 간주됩니다.
  • null과 undefined의 차이에 대해서 간략하게 설명해주세요
    • null은 의도적으로 변수에 값이 없다는 것을 명시할 때 사용합니다. 다만 undefined는 자바스크립트 엔진이 초기화한 값으로 개발자가 의도적으로 변수의 값이 없다는 것을 명시하고 싶을 때는 null을 사용하는 것이 좋습니다.
  • undefined를 개발자가 의도적으로 할당하지 않았는데도 할당된 경우는 어떤 과정에 의해서 그렇게 할당되는 건지 설명해주실 수 있을까요?
    • 이는 변수 선언에 의해 확보된 메모리 공간을 처음 할당이 이루어질 때까지 빈 상태(대부분 비어있지 않고 쓰레기 값(Garbage value)이 들어 있다)로 내버려두지 않고 자바스크립트 엔진이 undefined로 초기화하기 때문이다. 이처럼 undefined는 개발자가 의도적으로 할당한 값이 아니라 자바스크립트 엔진에 의해 초기화된 값이다. 때문에 변수의 값이 없다는 것을 명시하고 싶은 경우는 undefined를 할당하는 것이 아니라 null을 할당하는 편을 권장한다.
  • symbol에 대해서 설명해주세요
    • symbol은 객체의 프로퍼티 키를 만들기 위해 사용되는데, 유일한 값으로 다른 프로퍼티와의 충돌 위험이 없습니다.
  • NaN와 NaN를 비교연산자를 통해 비교하면 어떤 값을 반환 받나요? 명확한 비교를 하고 싶으면 어떻게 해야 하나요?
    • 두 개의 값을 비교하면 false를 반환합니다. 이는 자바스크립트 설계상 생긴 특성으로 알고 있습니다. 따라서 명확하게 비교하고자 한다면 isNaN()이라는 내장함수를 이용해서 비교해야 합니다.
  • typeof를 사용해서 null을 확인해보면 어떻게 나오는지 혹시 아시나요?
    • typeof null이 "object"로 반환되는 것은 JavaScript의 역사적인 설계 결함으로 인한 것이며, 이는 현재까지도 수정되지 않은 상태입니다. 이를 고려하여 코드를 작성할 때에는 null을 확인하기 위해 엄격한 비교 연산자(===)를 사용하거나, 다른 방법을 사용하여 확인하는 것이 좋습니다.
  • string 타입은 따옴표로 감싸는데 혹시 어떤 이유로 그렇게 처리하는지 아시나요?
    • 자바스크립트 엔진이 식별자로 인식을 할지 안할지 판단하는 근거가 됩니다.

참고자료

profile
평소엔 책과 영화와 음악을 좋아합니다. 보편적이고 보통사람들을 위한 서비스 개발을 꿈꾸고 있습니다.

0개의 댓글