1. 자바스크립트는 동적 타입(Dynamic Typing) 및 약타입(Weak Typing) 언어로 분류됩니다.
이는 변수의 타입이 고정되지 않고, 값을 할당하는 시점에 따라 동적으로 결정되며, 같은 변수에 여러 타입의 값을 자유롭게 할당할 수 있음을 의미합니다.
1-1) 타입 선언 불필요: 변수를 선언할 때 데이터 타입을 명시하지 않아도 됩니다.
let variable = 42; // number 타입 variable = "Hello"; // string 타입 variable = true; // boolean 타입
위 코드에서 variable의 타입은 할당된 값에 따라 자동으로 변경됩니다
1-2) 타입 추론(Type Inference): 자바스크립트 엔진은 변수에 할당된 값을 기반으로 변수의 타입을 추론합니다.
let name = "John"; // string으로 추론 let age = 30; // number로 추론
1-3) 재할당 가능: 같은 변수에 다른 데이터 타입의 값을 재할당할 수 있습니다. 이는 자바스크립트가 특정 타입에 제한되지 않음을 보여줍니다.
let data = 100; // number data = "Data changed"; // string
2. Data type

2-1) Number
var integer = 10; // 정수 var double = 10.12; // 실수 var negative = -20; // 음의 정수
2-2) String
var integer = 10; // 정수 var double = 10.12; // 실수 var negative = -20; // 음의 정수
문자열의 불변성(Immutable)
var str = 'Hello'; // 첫 번째 구문 str = 'world'; // 두 번째 구문첫 번째 구문:
'Hello'라는 문자열이 메모리에 생성됩니다.
변수 str은 'Hello'가 저장된 메모리 주소를 가리킵니다.
두 번째 구문:
'world'라는 새로운 문자열이 메모리에 생성됩니다.
변수 str은 이제 'world'가 저장된 메모리 주소를 가리키도록 변경됩니다.
이때, 기존의 'Hello' 문자열은 여전히 메모리에 존재하지만, 더 이상 변수 str이 이를 참조하지 않습니다.
2-3) Undefinded
원시 데이터 타입(Primitive Data Type) 중 하나로, 값이 할당되지 않은 상태를 나타냅니다. 이는 JavaScript 엔진이 자동으로 부여하는 값입니다.
예시
선언만 된 변수
let x; console.log(x); // 출력: undefined
함수의 반환값이 없는 경우
function greet() { console.log("Hello!"); } let result = greet(); // 함수 실행 console.log(result); // 출력: undefined
존재하지 않는 객체 속성에 접근
const person = { name: "Alice" }; console.log(person.age); // 출력: undefined
배열 요소가 비어 있는 경우
let arr = [1, , 3]; // 두 번째 요소가 비어 있음 console.log(arr[1]); // 출력: undefined
함수 매개변수에 값이 전달되지 않은 경우
function greet(name) { console.log(`Hello, ${name}!`); } greet(); // 출력: Hello, undefined!
2-4) Null
원시 데이터 타입(Primitive Data Type) 중 하나로, "값이 없음" 또는 "의도적으로 비어 있음"을 나타냅니다. 이는 개발자가 명시적으로 설정하는 값으로, 변수나 객체에 "아무 값도 없다"는 것을 표현하기 위해 사용됩니다.
예시
명시적으로 "값 없음"을 설정
let value = null; // 의도적으로 값 없음 console.log(value); // 출력: null
객체가 더 이상 유효하지 않을 때
let obj = { key: "value" }; obj = null; // 객체 참조 제거 console.log(obj); // 출력: null
DOM 요소가 존재하지 않을 때
let element = document.getElementById("nonexistent"); console.log(element); // 출력: null (요소가 없으므로)

2-5) Boolean
원시 데이터 타입(Primitive Data Type) 중 하나로, true 또는 false라는 두 가지 값만 가질 수 있습니다.
예시
리터럴 값
let isTrue = true; // 참 let isFalse = false; // 거짓 console.log(typeof isTrue); // 출력: "boolean" console.log(typeof isFalse); // 출력: "boolean"
비교 연산의 결과
console.log(10 > 5); // 출력: true console.log(10 < 5); // 출력: false console.log(10 === 10); // 출력: true
Boolean() 함수
console.log(Boolean(1)); // 출력: true (1은 truthy) console.log(Boolean(0)); // 출력: false (0은 falsy) console.log(Boolean("Hello")); // 출력: true (비어 있지 않은 문자열은 truthy) console.log(Boolean("")); // 출력: false (빈 문자열은 falsy)