데이터 타입 질문/답변

어승준·2023년 10월 4일

JS 스터디

목록 보기
2/26
post-thumbnail

📌 변수의 값이 없다는 것을 명시하려고 할 때 null과 undefined 둘 중 어떤 타입을 사용할 것이지 말하고 이유를 설명해주세요.

  • 변수를 선언했지만 초기값을 아직 알지 못하거나 값이 아직 할당되지 않은 경우, undefined를 사용할 수 있습니다.
  • 개발자가 명시적으로 값이 없음을 표현하고자 할 때, null을 사용합니다.

따라서, 변수의 값이 없다는 것을 명시하려면 null을 사용하는 것이 맞음


📌 JavaScript에서 Truthy와 Falsy 값은 무엇이며, 어떤 값이 각각에 해당되나요?

▶️ Truthy한 값

  • Truthy 값은 조건식에서 true로 평가되는 값
  • 예시
    • 모든 비어 있지 않은 문자열
    • 모든 숫자, 양수 또는 음수
    • 모든 객체 (예: {}, [], 함수 등)
    • 모든 배열 (빈 배열도 포함)
    • 모든 함수 (비어 있지 않은 함수)
    • true

▶️ Falsy한 값

  • Falsy 값은 조건식에서 false로 평가되는 값
  • 예시
    • 0
    • 빈 문자열 ""
    • null
    • undefined
    • NaN
    • false

📌 데이터 타입은 왜 필요한 것일까요?

  • 데이터 타입은 프로그래밍 언어에서 변수나 값의 종류를 식별하는 데 사용되며, 이들은 데이터를 어떻게 저장하고 처리할지 결정하는 데 중요한 역할
  • 효율적인 메모리 할당, 유효성 검사, 타입 에러 방지 등을 위해 필요

📌 정적 타입 언어와 동적 타입 언어의 차이점을 설명해주세요.

▶️ 정적 타입 언어

  • 정적 타입 언어에서는 변수의 데이터 타입이 컴파일 시점에 결정되고, 변수는 해당 타입의 값만을 저장할 수 있습니다.
  • 변수를 선언할 때 명시적으로 타입을 지정해야 합니다.
  • 컴파일러는 변수의 타입을 검사하고, 타입 불일치 에러를 발생시킵니다. 이는 코드를 실행하기 전에 오류를 감지할 수 있게 해줍니다.
  • 대규모 프로젝트나 팀 프로젝트에서 더 많은 협업과 안정성을 필요로 할 때 사용됩니다.
  • 예시 언어: Java, C++, C#
int x = 5; // 정수 타입 변수
String name = "John"; // 문자열 타입 변수

▶️ 동적 타입 언어

  • 동적 타입 언어에서는 변수의 데이터 타입이 실행 시점에 결정됩니다. 변수는 언제든지 다른 타입의 값을 가질 수 있습니다.
  • 변수를 선언할 때 타입을 명시적으로 지정하지 않아도 됩니다.
  • 변수의 타입은 변수에 할당된 값에 따라 동적으로 변경됩니다.
  • 오류는 런타임 시점에 발생할 수 있으며, 컴파일러가 타입 검사를 수행하지 않으므로 개발자가 타입 에러에 더 주의해야 합니다.
  • 코드 작성이 더 간단하고 유연하며, 작은 프로젝트나 빠른 개발을 위해 적합합니다.
  • 예시 언어: JavaScript, Python, Ruby
let x = 5; // 동적 타입, 정수
x = "John"; // 동적 타입, 문자열

📌 원시형 데이터와 참조형 데이터에 대해서 설명해주세요.

▶️ 원시형 데이터

  • 원시형 데이터는 단순하게 값을 나타내는 데이터 타입으로, 변수에 실제 값을 저장
  • 원시형 데이터는 스택 메모리에 저장되며, 값의 복사가 이루어집니다. 따라서 변수 간에 독립적인 값을 가짐
  • 예시
    • 정수 (예: 42)
    • 부동소수점 (예: 3.14)
    • 문자열 (예: "Hello, World!")
    • 불리언 (예: true, false)
    • null
    • undefined

▶️ 참조형 데이터

  • 참조형 데이터는 객체, 배열, 함수 등과 같이 복잡한 데이터를 나타냄
  • 변수에는 데이터의 위치(메모리 주소)를 가리키는 참조(Reference)가 저장되고, 실제 데이터는 힙(heap) 메모리에 저장됨
  • 참조형 데이터는 변수 간에 참조(Reference)를 공유하므로 하나의 변수에서 데이터를 변경하면 다른 변수에서도 영향을 받음
  • 예시
    • 객체 (예: { name: "John", age: 30 })
    • 배열 (예: [1, 2, 3, 4, 5])
    • 함수 (예: function add(a, b) { return a + b; })
profile
鈍筆勝聰(둔필승총) : '둔한 붓이 총명함을 이긴다' (서툴더라도 기록으로 남기는 것이 사람의 기억보다 훨씬 오래 보전된다) - 정약용

0개의 댓글