icon안동민 개발노트

변수, 데이터 타입, 연산자


 자바스크립트는 동적 타입 언어로, 변수, 다양한 데이터 타입, 그리고 여러 종류의 연산자를 제공합니다.

 이 절에서는 이러한 기본적인 요소들에 대해 자세히 알아보겠습니다.

변수 선언

 자바스크립트에서는 세 가지 방법으로 변수를 선언할 수 있습니다. var, let, const

 1. var

  • 함수 스코프 또는 전역 스코프
  • 호이스팅(hoisting)됨
  • 재선언 및 재할당 가능
var x = 5;
var x = 10; // 재선언 가능
x = 15;     // 재할당 가능

 2. let (ES6+)

  • 블록 스코프
  • 호이스팅되지만 TDZ(Temporal Dead Zone) 적용
  • 재선언 불가, 재할당 가능
let y = 5;
// let y = 10; // 오류: 재선언 불가
y = 15;     // 재할당 가능

 3. const (ES6+)

  • 블록 스코프
  • 호이스팅되지만 TDZ 적용
  • 재선언 및 재할당 불가
  • 객체나 배열의 내용은 변경 가능
const z = 5;
// z = 10; // 오류: 재할당 불가
const obj = {prop: 5};
obj.prop = 10; // 객체의 속성은 변경 가능

데이터 타입

 자바스크립트는 7가지 기본 데이터 타입을 가지고 있습니다.

 1. Number : 정수와 실수를 모두 표현

let num = 5;
let float = 3.14;

 2. String : 텍스트 데이터

let str = "Hello, World!";
let str2 = 'Single quotes work too';

 3. Boolean : true 또는 false

let isTrue = true;
let isFalse = false;

 4. Null : 의도적인 빈 값

let empty = null;

 5. Undefined : 값이 할당되지 않은 상태

let notDefined;
console.log(notDefined); // undefined

 6. Symbol (ES6+) : 유일한 식별자

const sym = Symbol('description');

 7. Object : 키-값 쌍의 집합

let obj = {
   name: "John",
   age: 30
};

동적 타이핑

 자바스크립트는 동적 타입 언어입니다.

 즉, 변수의 타입이 런타임에 결정되고 변경될 수 있습니다.

let x = 5;       // Number
x = "five";      // 이제 String

 이러한 동적 타이핑은 유연성을 제공하지만, 예기치 않은 타입 관련 오류를 발생시킬 수 있습니다.

 이를 방지하기 위해 다음과 같은 방법을 사용할 수 있습니다.

  • 엄격한 코딩 규칙 적용
  • TypeScript와 같은 정적 타입 검사 도구 사용
  • 런타임 타입 검사 수행

연산자

 자바스크립트는 다양한 연산자를 제공합니다.

 1. 산술 연산자 : +, -, *, /, %, **(거듭제곱)

let sum = 5 + 3;  // 8
let power = 2 ** 3;  // 8

 2. 할당 연산자 : =, +=, -=, *=, /=, %=

let x = 5;
x += 3;  // x는 이제 8

 3. 비교 연산자: ==, ===, !=, !==, <, >, <=, >=

5 == "5"   // true (값만 비교)
5 === "5"  // false (값과 타입 모두 비교)

 4. 논리 연산자 : &&(AND), ||(OR), !(NOT)

true && false  // false
true || false  // true
!true          // false

 5. 삼항 연산자 : 조건 ? 표현식1 : 표현식2

let age = 20;
let status = (age >= 18) ? "성인" : "미성년자";

연산자 우선순위

 연산자는 우선순위에 따라 실행됩니다.

 괄호 (), 멤버 접근 ., 함수 호출 () 등이 가장 높은 우선순위를 가지며, 할당 연산자 =가 가장 낮은 우선순위를 가집니다.

타입 변환

 자바스크립트에서는 두 가지 방식의 타입 변환이 있습니다.

 1. 명시적 변환 : 개발자가 의도적으로 타입을 변환

let num = Number("5");  // 문자열을 숫자로
let str = String(5);    // 숫자를 문자열로

 2. 암묵적 변환 : 자바스크립트 엔진이 자동으로 타입을 변환

"5" + 3  // "53" (숫자가 문자열로 변환)
"5" - 3  // 2 (문자열이 숫자로 변환)

 암묵적 변환은 편리할 수 있지만, 예기치 않은 결과를 초래할 수 있으므로 주의가 필요합니다.

 자바스크립트의 변수, 데이터 타입, 연산자는 언어의 기본적인 구성 요소입니다. 이들을 올바르게 이해하고 사용하는 것은 효과적인 자바스크립트 프로그래밍의 기초가 됩니다.

 변수 선언 시 letconst를 주로 사용하고, var는 레거시 코드를 위해 알아두는 것이 좋습니다. 블록 스코프를 제공하는 letconst는 더 예측 가능한 코드를 작성하는 데 도움이 됩니다.

 데이터 타입을 다룰 때는 동적 타이핑의 특성을 항상 염두에 두어야 합니다. 특히 큰 규모의 프로젝트에서는 TypeScript와 같은 정적 타입 시스템을 도입하는 것을 고려해볼 수 있습니다.

 연산자 사용 시 =====의 차이를 명확히 이해하고, 가능한 ===를 사용하여 타입까지 비교하는 것이 안전합니다. 또한, 연산자 우선순위를 잘 이해하고 필요한 경우 괄호를 사용하여 의도를 명확히 표현하는 것이 좋습니다.

 마지막으로, 타입 변환 시 가능한 명시적 변환을 사용하여 코드의 의도를 명확히 하고, 암묵적 변환으로 인한 예기치 않은 결과를 방지하는 것이 중요합니다.