[JavaScript] 1. 자료형

Wishtree·2021년 5월 2일
0
post-thumbnail

참고 :

JavaScript는 대소문자를 구별하며 유니코드 문자셋을 이용하므로 한글 변수 선언도 가능하다.

JavaScript는 느슨한 타입 (loosely typed) 언어, 혹은 동적 (dynamic) 언어이다. 그 말은, 변수의 타입을 미리 선언할 필요가 없다는 뜻이다. 타입은 프로그램이 처리되는 과정에서 자동으로 파악될 것이다. 또한 그 말은 같은 변수에 여러 타입의 값을 넣을 수 있다는 뜻이다.

본문

최신 ECMAScript 표준은 다음과 같은 7개의 자료형을 정의한다.

  • 기본 자료형 (Primitive) 인 여섯가지 데이터 타입
    • Boolean
    • Null
    • Undefined
    • Number (en-US)
    • String
    • Symbol (ECMAScript 6 에 추가됨)
  • 별도로 Object 도 있음

Undefined : 값을 할당하지 않은 변수. 일시적 사각지대(Temporal Dead Zone; TDZ)에서 할당됨. Hoisting 개념과 연계.

String : C 같은 언어와는 다르게, 자바스크립트의 문자열은 변경 불가능 (immutable) 하다. 이것은 한 번 문자열이 생성되면, 그 문자열을 수정할 수 없다는걸 의미한다. 그러나 원래 문자열에서 일부가 수정된 다른 문자열을 만드는건 가능하다. String.substr(), String.concat() 등으로.

규칙만 잘 정의해놓는다면, 어떤 자료구조가 되던 문자열로 표시할 수 있다. 그렇다고 해서 이게 좋은 방법이 되는 건 아니다. 예를 들자면, 구분자로 리스트 자료형을 흉내낼 수 있을 것이다 (하지만 자바스크립트의 배열을 사용하는게 더 알맞을 것이다). 불행하게도, 리스트의 요소중에 구분자가 들어있는 요소가 있다면 리스트는 엉망진창이 될 것이다. 물론 탈출 문자 (escape character) 등을 사용하거나 할 수도 있을 것이다. 하지만 이런 것들은 모두 미리 정해놓은 규칙을 필요로 하고, 덕분에 불필요한 관리 부담을 낳는다.

Symbol : Symbol 은 ECMAScript 6 에서 추가되었다. Symbol은 유일하고 변경 불가능한 (immutable) 기본값 (primitive value) 이다. 또한, 객체 속성의 key 값으로도 사용될 수 있다 (아래를 볼 것). 몇몇 프로그래밍 언어에서는 Symbol을 atom 이라고 부른다. 또, C 언어의 이름있는 열거형 (enum) 과도 비슷하다.

Object : 객체는 데이터 컬렉션이나 복잡한 개체(entity)를 표현할 수 있다. 자바스크립트에서, 객체는 속성들을 담고있는 가방 (collection) 으로 볼 수 있다. 속성 값은 객체를 포함해 어떠한 자료형도 될 수 있고, 그 덕분에 복잡한 데이터 구조를 형성하는게 가능해진다. 속성은 키 (key) 값으로 식별된다. 키 값은 String 이거나 Symbol 값이다.

Dates : 시간을 나타내려면 Date utility를 사용한다.

Arrays : 배열(Arrays) 는 정수키를 가지는 일련의 값들을 표현하기 위한 오브젝트이다. 배열 오브젝트에는 길이를 나타내는 'length'란 속성도 있다. 배열은 Array.prototype을 상속받으므로 배열을 다룰 때 편한 indexOf (배열에서 값 검색)와 push (새로운 값 추가) 같은 함수를 사용할 수 있다. 배열은 리스트나 집합을 표현하는데 적합하다.

번외

  • Infinite 개념이 추가되어 division by 0 문제로 프로그램이 정지하지 않게 되었다.

  • 작은따옴표와 큰따옴표에 차이를 두지 않는다.

  • 역 따옴표로 변수나 표현식을 감싼 후 ${…}안에 넣어주면, 아래와 같이 원하는 변수나 표현식을 문자열 중간에 손쉽게 넣을 수 있다.

alert( `Hello, ${name}!` );
  • null은 ‘존재하지 않는(nothing)’ 값, ‘비어 있는(empty)’ 값, ‘알 수 없는(unknown)’ 값이다.
profile
The interactive storytelling web service <Wishtree> is an open source project run by Team Noob. We share tips for effective non-face-to-face teamwork and service development process. Hope it helps a little to the world suffering from corona.

0개의 댓글