이 영역을 누르면 첫 페이지로 이동
천천히 꾸준히 조용히 블로그의 첫 페이지로 이동

천천히 꾸준히 조용히

페이지 맨 위로 올라가기

천천히 꾸준히 조용히

천천히 꾸준히 조용히.. i3months 블로그

[JavaScript] 리터럴 / 타입

  • 2022.03.07 21:30
  • Programming Language/JavaScript
반응형

 

 

리터럴

 

 

자바스크립트는 자바나 C언어같은 정적 타입 언어처럼 타입을 강력하게 지켜야 하는 언어는 아니다.

 

let const등으로 변수를 선언하고 그에 맞는 값을 작성했을 때, 자바스크립트 엔진은 그 코드가 실행될 때 값의 리터럴에 따라서 변수에 해당하는 값을 할당하며, 재할당에 의해 변수의 타입은 언제든지 동적으로 변할 수 있다. (동적 타입 언어)

 

자바와 C언어에서는 1.0f 324L 처럼 숫자 표현을 명확히 하기 위해 리터럴을 사용했고, 자바스크립트에서의 리터럴은 다음과 같다.

 

 

  정수 리터럴   100
  이진수 리터럴   0b0101
  문자열 리터럴   "hello" or 'hello'
  boolean 리터럴   true false
  null 리터럴   null
  undefined 리터럴   undefined
  객체 리터럴   {a : 'A', b : 'B'}
  배열 리터럴   [1,2,3]
  함수 리터럴   function() {}

 

 

 

표현식

 

 

프로그래밍 언어에서 값은 표현식이 평가되어 생겨난 결과이고, 표현식은 값으로 평가될 수 있는 모든 문장을 말한다.

 

const something = 10 + 20; // 10 + 20은 30을 생성하니 표현식이다.

something; // 그 자체로 표현식이다.

30; // 리터럴도 그 자체로 표현식이다.

const some; // 변수 선언문은 값이 아니므로 표현식이 아니다. undefined은 할당되지 않았을 때..

 

 

타입

 

 

데이터 타입은 값을 저장하고 참조할 때 확보해야 하는 메모리 공간의 크기를 결정하기 위해서, 메모리에서 읽어온 이진수를 어떻게 해석할지 결정하기 위해 사용된다.

 

원시 타입 (Primitive)

  • Number : 정수와 실수를 구분하지 않고, 모든 수를 실수로 처리한다. 64비트 부동소수점 형식을 따른다.
  • String : 문자열. ' ' 와 " " 로 표현할 수 있고, ` `로도 표현할 수 있다. (템플릿 리터럴) 이 경우 줄바꿈이 가능하다.
  • boolean : 참 / 거짓
  • undefined : 변수에 값이 선언되지 않았음을 의미한다. 
  • null : 의도적으로 값을 넣지 않았음을 명시할 때 사용된다.
  • symbol : 유일한 값. ES6에서 추가됐다.

 

객체 타입 (Object)

 

Number타입에는 세 가지 특별한 값이 있다.

  • Infinity : 양의 무한
  • -Infinity : 음의 무한
  • NaN : Not a Number

자바에서는 문자열을 String 객체로 표현하고, C언어에서는 문자열을 char타입의 배열로 표현하지만, 자바스크립트에서는 문자열을 기본 타입으로 표현함을 알아두자. 

 

문자열을 기본 타입으로 제공하지만, 배열과 유사하게 각 문자에 접근할 수 있다.

 

템플릿 리터럴을 사용해서 문자열을 표시할 때, ${} 를 통해 표현식을 삽입할 수 있다.

 

const str = `1+2 = ${1+2}`; // 1+2 = 3

 

이 때 표현식의 결과는 문자열로 처리된다.

 

Symbol타입은 다른 값들과 중복되지 않는 성질이 있어 객체를 구분하는 key를 만들때 사용한다.

Symbol함수를 통해 생성하며 외부에 노출되지 않는다.

 

const key = Symbol('key');

const obj = {};

obj[key] = 'value'; // 사용 예시

 

 

Number타입의 크기는 64비트(8바이트)로 명시되어 있고 문자열은 한 문자당 2바이트로 명시되어 있지만 나머지 기본 타입들에 대해서는 명시된 정보가 없고, 엔진마다 다르게 다른 크기를 사용한다.

 

자바스크립트는 동적 타입 언어이니 변수를 사용할 때 각별히 주의해야 하며, 아래 내용을 참고해서 코드를 작성하자.

 

  • 변수는 필요한 만큼 최소한으로 사용하자.
  • 변수의 scope는 최대한 좁게 만들자.
  • 전역 변수의 사용은 자제하자.
  • 변수보다 상수를 사용하자.
  • 변수명 대충 짓지 말자.

 

 

반응형

'Programming Language > JavaScript' 카테고리의 다른 글

[JavaScript] 스코프  (0) 2022.03.10
[JavaScript] 함수  (0) 2022.03.10
[JavaScript] 타입 변환 / 단축 평가  (0) 2022.03.08
[JavaScript] 연산자 / 제어문  (0) 2022.03.08
[JavaScript] 입문 / 변수  (0) 2022.03.07

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [JavaScript] 함수

    [JavaScript] 함수

    2022.03.10
  • [JavaScript] 타입 변환 / 단축 평가

    [JavaScript] 타입 변환 / 단축 평가

    2022.03.08
  • [JavaScript] 연산자 / 제어문

    [JavaScript] 연산자 / 제어문

    2022.03.08
  • [JavaScript] 입문 / 변수

    [JavaScript] 입문 / 변수

    2022.03.07
다른 글 더 둘러보기

정보

천천히 꾸준히 조용히 블로그의 첫 페이지로 이동

천천히 꾸준히 조용히

  • 천천히 꾸준히 조용히의 첫 페이지로 이동

검색

방문자

  • 전체 방문자
  • 오늘
  • 어제

카테고리

  • 분류 전체보기 (678)
    • Algorithm (205)
      • Data Structure (5)
      • Theory && Tip (33)
      • Baekjoon (166)
      • ALGOSPOT (1)
    • Spring (123)
      • Spring (28)
      • Spring Web MVC (20)
      • Spring Database (14)
      • Spring Boot (6)
      • Spring 3.1 (11)
      • Spring Batch (6)
      • Spring Security (16)
      • JPA (12)
      • Spring Data JPA (5)
      • QueryDSL (4)
      • eGovFramework (1)
    • Programming Language (74)
      • C (25)
      • C++ (12)
      • Java (19)
      • JavaScript (15)
      • Python (1)
      • PHP (2)
    • Computer Science (142)
      • Machine Learning (38)
      • Operating System (18)
      • Computer Network (28)
      • System Programming (22)
      • Universial Programming Lang.. (8)
      • Computer Architecture (4)
      • Compiler Design (11)
      • Computer Security (13)
    • Database (21)
      • Database (7)
      • MySQL (3)
      • Oracle (3)
      • Redis (5)
      • Elasticsearch (3)
    • DevOps (20)
      • Docker && Kubernetes (8)
      • Jenkins (4)
      • Amazon Web Service (8)
    • Mobile (28)
      • Android (21)
      • Flutter (7)
    • 💡 솔루션 (17)
    • 👥 모각코 (10)
    • 💬 기록 (7)
    • 📚 공부 (6)
    • -------------- (25)

최근 글

나의 외부 링크

메뉴

  • 홈
반응형

정보

i3months의 천천히 꾸준히 조용히

천천히 꾸준히 조용히

i3months

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. Copyright © i3months.

티스토리툴바