CodeGym /행동 /Frontend SELF KO /JavaScript의 변수와 데이터 타입

JavaScript의 변수와 데이터 타입

Frontend SELF KO
레벨 33 , 레슨 1
사용 가능

2.1 JavaScript의 변수

JavaScript는 유연하고 동적인 프로그래밍 언어로, 변수를 선언하고 데이터 타입을 다루는 다양한 방법을 지원해. 이번 강의에서는 변수 선언의 세 가지 주요 방법 (var, let, const)과 JavaScript의 주요 원시 데이터 타입을 살펴볼 거야.

JavaScript의 변수

JavaScript는 동적 타입 언어야. 변수는 타입이 없어. 어떤 변수에든 언제든지 어떤 값을 할당할 수 있어 (하지만 약간의 예외가 있지).

변수를 생성하려면 다음과 같은 구조로 작성하면 돼:

    
      var name;
    
  

변수에 값을 즉시 할당할 수도 있어:

    
      var name = value;
    
  

하지만 사실 JavaScript에는 변수를 만드는 방법이 총 3가지나 있어. 이제 그것들에 대해 자세히 얘기해볼게.

var 연산자

var를 사용해서 선언한 변수는 함수 또는 전역 스코프를 가져. 이 변수들은 "호이스팅"(hoisting)의 영향을 받아, 코드가 실행될 때 스코프의 맨 위로 선언이 이동되어.

예제:

JavaScript
    
      console.log(x); // undefined
      var x = 10;
      console.log(x); // 10
    
  

이 예제에서 변수 x는 스코프의 시작 부분으로 올라가서 첫 번째 console.logundefined를 출력해.

다시 말해서, '호이스팅'은 코드를 이렇게 변환해:

JavaScript
    
      var x;
      console.log(x); // undefined
      x = 10;
      console.log(x); // 10
    
  

let 연산자

개발자들은 var의 행동을 바꾸고 싶어했지만, 이미 작성된 수백만 줄의 코드가 망가지는 걸 두려워했어. 그래서 조금 다른 행동을 가진 또 다른 변수를 만드는 연산자를 생각해냈어.

let으로 선언된 변수는 블록 스코프를 가져. 즉, 이 변수들은 선언된 코드 블록 내에서만 사용할 수 있어 (보통 중괄호 {} 안). letvar처럼 호이스팅되지 않아.

예제:

y 변수는 if 블록 내에서만 존재해.

JavaScript
    
      if (true) {
        let y = 20;
        console.log(y); // 20
      }

      console.log(y); // ReferenceError: y is not defined
    
  

const 연산자

const를 사용하여 선언된 변수는 또한 블록 스코프를 가지며, 초기화된 이후에는 재할당될 수 없어. 하지만 const로 선언된 객체의 속성은 변경 가능해.

즉, 변수를 변경할 수는 없지만, 그 변수가 참조하는 객체는 변경할 수 있어. 잘하려고 했는데, 늘 그렇듯이 말이지.

예제:

이 예제에서 상수 x는 재할당될 수 없지만, 객체 obj는 변경 가능해.

JavaScript
    
      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 타입

정수와 부동 소수점 숫자를 포함한 모든 숫자 값을 나타내.

예제:

JavaScript
    
      let num = 42;
      let pi = 3.14;
    
  

String 타입

텍스트 데이터: 문자열, 문자, 이모티콘 등을 나타내. 문자열처럼 보이는 모든 것들이 여기 포함돼.

예제:

JavaScript
    
      let greeting = "Hello, world!";
      let facepalm = "🤦";
      let char = 'x';
    
  

Boolean 타입

true 또는 false의 논리적 값을 나타내.

JavaScript
    
      let isTrue = true;
      let isFalse = false;
    
  

Null 타입

의도적인 값이 없음을 나타내.

JavaScript
    
      let empty = null;
    
  

하나의 값만 포함된 타입이 있다면, 그게 정말 고유한 값인지 아니면 고유한 타입인지 헷갈릴 수 있지 않을까?

Undefined 타입

선언되었지만 초기화되지 않은 변수의 값을 나타내.

JavaScript
    
      let notAssigned;
      console.log(notAssigned); // undefined
    
  

2.3 var, let, const 비교

마무리로 변수를 생성하는 세 가지 방법을 다시 한번 비교해보자:

특징 var let const
스코프 함수 또는 전역 블록 블록
호이스팅 (Hoisting) 예, 하지만 초기화는 호이스팅되지 않음 아니요 아니요
재할당 아니요
초기화 필수 아님 필수 아님 필수

JavaScript는 변수를 선언하는 여러 방법을 제공하며, 각각의 방법은 컨텍스트에 따라 고유의 특성과 사용 가능성을 가져. var는 호이스팅과 전역 스코프의 특성 때문에 덜 사용되며, letconst는 블록 스코프와 재할당 제어 때문에 현대 JavaScript에서 선호돼.

원시 데이터 타입은 복잡한 애플리케이션을 만들기 위해 필요한 기본 기능을 제공하면서 주요 데이터 구조와 작업할 수 있도록 해줘. 이게 바로 세계에서 가장 인기 있는 언어야 :)

코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION