JavaScript 핵심 데이터 타입과 연산자 이해

변수 선언과 동적 타이핑

JavaScript에서 변수는 var, let, 또는 const 키워드를 사용해 생성할 수 있다. 가장 기본적인 형태는 var를 이용하는 것이다.

var userName = "Alice";
var userAge = 25;
  • var: 변수 선언을 의미하는 키워드.
  • =: 값을 할당하는 연산자로, 오른쪽의 값을 왼쪽 변수에 저장한다.
  • ;: 문장 종료 기호. 생략 가능하지만 명시하는 것이 좋다.
  • 문자열 값은 작은따옴표(')나 큰따옴표(")로 감싸야 한다.

변수는 선언 후 읽기 및 수정이 가능하다.

console.log(userAge);     // 출력: 25
userAge = 30;             // 값 변경

동적 타입 시스템

JavaScript는 런타임에 따라 변수의 타입이 결정되는 동적 타입 언어이다. 같은 변수라도 다른 타입의 값을 가질 수 있다.

let data = 42;           // number
data = "Hello World";      // string
data = true;               // boolean

이는 Java나 C++과 같은 정적 타입 언어와 대비된다. 정적 언어에서는 변수 선언 시 타입이 고정되며, 이후 변경 불가능하다.

기본 데이터 타입

JavaScript는 주요한 원시 타입(primitive type)을 여섯 가지 제공한다:

  • number: 정수와 실수 구분 없이 모두 숫자형으로 처리.
  • string: 텍스트 데이터.
  • boolean: true 또는 false.
  • undefined: 선언되었으나 값이 할당되지 않은 상태.
  • null: 의도적으로 비어 있음을 나타내는 값.

숫자형 (Number)

모든 숫자는 단일 number 타입으로 표현되며, 다양한 진법 표기도 지원한다.

const decimal = 100;       // 10진수
const octal = 0o77;        // 8진수 (ES6 이상)
const hex = 0xFF;          // 16진수
const binary = 0b1101;     // 2진수

특수한 숫자 값들도 존재한다:

  • Infinity: 무한대 (예: 1 / 0)
  • -Infinity: 음의 무한대
  • NaN: "Not-a-Number" — 유효하지 않은 산술 결과
console.log(100 * Number.MAX_VALUE);  // Infinity
console.log("abc" * 2);               // NaN
console.log(isNaN("abc" * 2));        // true

문자열 (String)

문자열은 작은따옴표 또는 큰따옴표로 묶는다. 내부에 따옴표를 포함하려면 이스케이프 문자나 혼합 사용이 필요하다.

let message = "He said, \"Hello!\"";
let quote = 'She said, "Hi!"';

주요 이스케이프 시퀀스:

  • \n: 줄바꿈
  • \\: 백슬래시 자체
  • \", \': 따옴표 포함
  • \t: 탭 간격

문자열 길이는 .length 속성으로 확인 가능하다.

console.log("JavaScript".length);  // 10

두 문자열은 + 연산자로 연결할 수 있으며, 문자열과 다른 타입 결합 시 암시적 변환이 발생한다.

let result = "Score: " + 95;  // "Score: 95"
console.log("50" + 50);         // "5050" (문자열 결합)
console.log(50 + 50);           // 100 (산술 덧셈)

불리언 (Boolean)

논리값 truefalse로 조건 판단에 사용된다. 산술 연산 시 각각 1과 0으로 취급되지만, 이는 권장되지 않는다.

console.log(true + 1);   // 2 (권장 X)
console.log(false + 1);  // 1 (권장 X)

undefined 와 null

undefined는 변수가 선언되었으나 초기화되지 않았을 때의 기본값이다.

let temp;
console.log(temp);            // undefined
console.log(temp + "test");   // "undefinedtest"
console.log(temp + 10);       // NaN

null은 개발자가 의도적으로 "값 없음"을 나타낼 때 사용한다.

let item = null;
console.log(item + 20);       // 20 (null은 숫자 연산에서 0으로 취급됨)
console.log(item + "text");   // "nulltext"

핵심 차이점:

  • undefined: "아직 정의되지 않음"
  • null: "의도적으로 비어 있음"

연산자 종류

산술 연산자

기본적인 수학 연산을 수행한다.

+  -  *  /  %  **
  • %: 나머지 연산
  • **: 거듭제곱 (ES2016 추가)

할당 및 복합 할당 연산자

=     // 할당
+=    // 예: a += 5 → a = a + 5
-=, *=, /=, %= 도 동일한 방식

증감 연산자

값을 1씩 증가 또는 감소시킨다.

let count = 0;
count++;  // 후위 증가 → 사용 후 1 증가
++count;  // 전위 증가 → 먼저 1 증가 후 사용

비교 연산자

두 값을 비교하여 불리언 결과 반환.

  • ==: 느슨한 비교 (타입 강제 변환 적용)
  • ===: 엄격한 비교 (타입과 값 모두 동일해야 함)
console.log(5 == "5");   // true
console.log(5 === "5");  // false

논리 연산자

조건 조합에 사용된다.

  • &&: AND — 모두 참일 때 참
  • ||: OR — 하나라도 참이면 참
  • !: NOT — 반전

비트 연산자 및 시프트 연산

정수의 이진수 표현을 기반으로 한 연산.

  • <<: 왼쪽 시프트 (왼쪽으로 이동, 0으로 채움)
  • >>: 오른쪽 산술 시프트 (부호 유지)
  • >>>: 오른쪽 논리 시프트 (항상 0으로 채움)
console.log(8 << 1);   // 16 (8 * 2)
console.log(8 >> 1);   // 4  (8 / 2)

태그: JavaScript 데이터타입 연산자 동적타이핑 undefined

8월 17일 17:24에 게시됨