[Javascript] 데이터 타입 - primitive type

nxnaxx·2021년 11월 8일
0

javascript

목록 보기
1/14
post-thumbnail

JS data type

primitive type

숫자(Number type)

 C나 Java의 경우 정수와 실수를 구분해서 다양한 타입이 존재하지만 Javascript는 하나의 숫자(Number) 타입만 존재한다. 숫자 타입의 값은 배정밀도 64bit 부동소수점 형식을 따르므로 모든 수를 실수로 처리한다.

// Number Type
var integer = 5;
var double = 5.24;
var negative = -20;
// Number type은 모두 실수로 처리됨
console.log(1 === 1.0);
console.log(3 / 2);

[실행결과]
true
1.5

위와 같이 정수끼리 나누더라도 실수가 나올 수 있다.


추가로 세 가지 특별한 값도 표현할 수 있다.

// Number type의 세 가지 특별한 값
console.log(10 / 0);
console.log(10 / -0);
console.log(1 * 'String');

[실행결과]
Infinity
-Infinity
NaN

Infinity: 양의 무한대
-Infinity: 음의 무한대
NaN(not-a-number): 산술 연산 불가

📌 javascript는 대소문자를 구분한다.


문자열(String type)

 문자열(string) 타입은 텍스트 데이터를 나타내는 데 사용한다. 작은따옴표('), 큰따옴표("), 백틱()`으로 텍스트를 감싼다. 가장 일반적인 표기법은 작은따옴표를 사용하는 것이다.

// String Type
var str1, str2, str3;
str1 = 'single quote str';
str2 = "double quote str";
str3 = `backtick str`;
console.log(str1);
console.log(str2);
console.log(str3);

[실행결과]
single quote str
double quote str
backtick str


'작은따옴표 내의 "큰따옴표"'와 "큰따옴표 내의 '작은따옴표'"는 문자열로 인식된다.

str4 = '당근은 "carrot"입니다.';
str5 = "좋아하는 향수는 'Jomalone'이다.";
console.log(str4);
console.log(str5);

[실행결과]
당근은 "carrot"입니다.
좋아하는 향수는 'Jomalone'이다.

📌 javascript의 문자열은 변경 불가능한 값이다.


템플릿 리터럴(template literal)

 템플릿 리터럴(template literal)은 멀티라인 문자열(multi-line string), 표현식 삽입(expression interpolation), 태그드 템플릿(tagged template) 등 편리한 문자열 처리 기능을 제공한다. 따옴표 대신 백틱( ` )을 사용해 표현한다.

멀티라인 문자열(multi-line string)

 일반 문자열 내에서는 개행이 허용되지 않아 공백을 표현하려면 백슬래시(\)로 시작하는 escape sequence를 사용해야 한다.

escape sequence의미
\0Null
\bBackspace
\fForm Feed; 프린터로 출력할 경우 다음 페이지의 시작 지점으로 이동
\nLF(Line Feed); 다음 행으로 이동
\rCR(Carriage Return); 커서를 처음으로 이동
\tTab(horizontal)
\vTab(vertical)
\uXXXXUnicode
\'Single quote
\"Double quote
\\Backslash
// escape sequence
var escapeSeq = '<ul>\n\t<li><a href="#">Home</a></li>\n</ul>';
console.log(escapeSeq);

[실행결과]
<ul>
	<li><a href="#">Home</a></li>
</ul>


템플릿 리터럴 내에서는 escape sequence를 사용하지 않고도 줄바꿈이 허용되며 모든 공백도 있는 그대로 적용된다.

// multi-line string
var template = `<ul>
  <li><a href="#">Home</a></li>
</ul>`;
console.log(template);

[실행결과]
<ul>
  <li><a href="#">Home</a></li>
</ul>

표현식 삽입(expression interpolation)

 문자열은 +를 사용해 연결할 수 있다. + 연산자는 피연산자 중 하나 이상이 문자열일 경우 문자열 연결 연산자로 동작하며 그 외의 경우는 덧셈 연산자로 동작한다.

// + 연산자
var hobby = "playing futsal"
console.log('My hobby is ' + hobby + '.');

[실행결과]
My hobby is playing futsal.


템플릿 리터럴 내에서는 표현식 삽입을 통해 문자열 연산자보다 가독성 좋고 간편하게 문자열을 삽입할 수 있다. ${ }으로 표현식을 감싸면 되는데, 표현식의 결과가 문자열이 아니더라도 문자열로 타입이 강제 변환되어 삽입된다.

// expression interpolation
console.log(`My hobby is ${hobby}.`);

[실행결과]
My hobby is playing futsal.

불린값(Boolean)

 boolean 타입의 값은 true, false뿐이다.

// boolean type
var bool = true;
console.log(bool);

[실행결과]
true

undefined

 undefined는 개발자가 의도적으로 할당하기 위한 값이 아니라 자바스크립트 엔진이 변수를 초기화할 때 사용하는 값으로 변수를 참조했을 때 undefined가 반환된다면 선언 이후 값이 할당된 적이 없는, 즉 초기화되지 않은 변수라는 것을 간파할 수 있다.

// undefined
var apple;
console.log(apple);

[실행결과]
undefined

null

 null은 변수에 값이 없다는 것을 의도적으로 명시할 때 사용한다. 변수에 null을 할당하는 것은 변수가 이전에 참조하던 값을 더 이상 참조하지 않겠다는 의미로, 이전에 할당되어 있던 값에 대한 참조를 명시적으로 제거한다는 뜻이다.


함수가 유효한 값을 반환할 수 없는 경우에도 null을 반환하기도 한다.

<!DOCTYPE html>
<html>
  <body>
    <script>
      var element = document.querySelector('.myClass');
      console.log(element); // null
    </script>
  </body>
</html>

심벌(Symbol)

 심벌 타입은 주로 이름이 충돌할 위험이 없는 객체의 유일한 프로퍼티 키를 만들기 위해 사용한다. Symbol 함수를 호출해 생성하며, 이때 생성된 값은 외부에 노출되지 않고 다른 값과 절대 중복되지 않는다.

// symbol값 생성
var key = Symbol('key');

// 객체 생성
var obj = {};

// 충돌 위험이 없는 값을 프로퍼티 키로 사용
obj[key] = 'value';
console.log(obj[key]);

[실행결과]
value

0개의 댓글