📌 변수의 값이 없다는 것을 명시하려고 할 때 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; })