2.1 JavaScript의 변수
JavaScript는 유연하고 동적인 프로그래밍 언어로, 변수를 선언하고 데이터 타입을 다루는 다양한 방법을 지원해. 이번 강의에서는 변수 선언의 세 가지 주요 방법 (var
, let
, const
)과 JavaScript의 주요 원시 데이터 타입을 살펴볼 거야.
JavaScript의 변수
JavaScript는 동적 타입 언어야. 변수는 타입이 없어. 어떤 변수에든 언제든지 어떤 값을 할당할 수 있어 (하지만 약간의 예외가 있지).
변수를 생성하려면 다음과 같은 구조로 작성하면 돼:
var name;
변수에 값을 즉시 할당할 수도 있어:
var name = value;
하지만 사실 JavaScript에는 변수를 만드는 방법이 총 3가지나 있어. 이제 그것들에 대해 자세히 얘기해볼게.
var 연산자
var
를 사용해서 선언한 변수는 함수 또는 전역 스코프를 가져. 이 변수들은 "호이스팅"(hoisting)의 영향을 받아, 코드가 실행될 때 스코프의 맨 위로 선언이 이동되어.
예제:
console.log(x); // undefined
var x = 10;
console.log(x); // 10
이 예제에서 변수 x
는 스코프의 시작 부분으로 올라가서 첫 번째 console.log
가 undefined
를 출력해.
다시 말해서, '호이스팅'은 코드를 이렇게 변환해:
var x;
console.log(x); // undefined
x = 10;
console.log(x); // 10
let 연산자
개발자들은 var
의 행동을 바꾸고 싶어했지만, 이미 작성된 수백만 줄의 코드가 망가지는 걸 두려워했어. 그래서 조금 다른 행동을 가진 또 다른 변수를 만드는 연산자를 생각해냈어.
let
으로 선언된 변수는 블록 스코프를 가져. 즉, 이 변수들은 선언된 코드 블록 내에서만 사용할 수 있어 (보통 중괄호 {} 안). let
은 var
처럼 호이스팅되지 않아.
예제:
y
변수는 if
블록 내에서만 존재해.
if (true) {
let y = 20;
console.log(y); // 20
}
console.log(y); // ReferenceError: y is not defined
const 연산자
const
를 사용하여 선언된 변수는 또한 블록 스코프를 가지며, 초기화된 이후에는 재할당될 수 없어. 하지만 const
로 선언된 객체의 속성은 변경 가능해.
즉, 변수를 변경할 수는 없지만, 그 변수가 참조하는 객체는 변경할 수 있어. 잘하려고 했는데, 늘 그렇듯이 말이지.
예제:
이 예제에서 상수 x
는 재할당될 수 없지만, 객체 obj
는 변경 가능해.
const x = 30;
console.log(x); // 30
x = 40; // TypeError: Assignment to constant variable.
const obj = { name: 'Alice' };
obj.name = 'Bob'; // 이건 가능해
console.log(obj.name); // Bob
2.2 원시 데이터 타입
JavaScript는 몇 가지 원시 데이터 타입을 지원하며, 이는 복잡한 객체가 아닌 단순한 값을 나타내.
Number 타입
정수와 부동 소수점 숫자를 포함한 모든 숫자 값을 나타내.
예제:
let num = 42;
let pi = 3.14;
String 타입
텍스트 데이터: 문자열, 문자, 이모티콘 등을 나타내. 문자열처럼 보이는 모든 것들이 여기 포함돼.
예제:
let greeting = "Hello, world!";
let facepalm = "🤦";
let char = 'x';
Boolean 타입
true
또는 false
의 논리적 값을 나타내.
let isTrue = true;
let isFalse = false;
Null 타입
의도적인 값이 없음을 나타내.
let empty = null;
하나의 값만 포함된 타입이 있다면, 그게 정말 고유한 값인지 아니면 고유한 타입인지 헷갈릴 수 있지 않을까?
Undefined 타입
선언되었지만 초기화되지 않은 변수의 값을 나타내.
let notAssigned;
console.log(notAssigned); // undefined
2.3 var, let, const 비교
마무리로 변수를 생성하는 세 가지 방법을 다시 한번 비교해보자:
특징 | var | let | const |
---|---|---|---|
스코프 | 함수 또는 전역 | 블록 | 블록 |
호이스팅 (Hoisting) | 예, 하지만 초기화는 호이스팅되지 않음 | 아니요 | 아니요 |
재할당 | 예 | 예 | 아니요 |
초기화 | 필수 아님 | 필수 아님 | 필수 |
JavaScript는 변수를 선언하는 여러 방법을 제공하며, 각각의 방법은 컨텍스트에 따라 고유의 특성과 사용 가능성을 가져. var
는 호이스팅과 전역 스코프의 특성 때문에 덜 사용되며, let
과 const
는 블록 스코프와 재할당 제어 때문에 현대 JavaScript에서 선호돼.
원시 데이터 타입은 복잡한 애플리케이션을 만들기 위해 필요한 기본 기능을 제공하면서 주요 데이터 구조와 작업할 수 있도록 해줘. 이게 바로 세계에서 가장 인기 있는 언어야 :)
GO TO FULL VERSION