데이터 타입은🤔
자바스크립트의 모든 값은 데이터 타입을 갖고, 7가지 데이터 타입을 제공함
👇7개의 데이터 타입은 원시타입(primitive type)과 객체타입(object/reference type)으로 분류할 수 있음
*원시타입의 6가지를 제외하곤 객체타입이다.
원시타입
🔸숫자 타입
const num = 20;
[mdn공식문서]
Number - JavaScript | MDN
Number 생성자는 숫자를 다루기 위해 상수와 메소드를 가지고 있습니다. 다른 타입의 값은 Number() 함수를 사용하여 숫자로 바꿀 수 있습니다.
developer.mozilla.org
🔸 문자열 타입
*템플릿 리터럴 : es6에 도입된 새로운 문자열 표기법
let hi = "문자열"
let string = hello; // hello is not defined , error
let template = `Template literal`;
[mdn공식문서]
String - JavaScript | MDN
String 전역 객체는 문자열(문자의 나열)의 생성자입니다.
developer.mozilla.org
🔸 불리언 타입
논리적 참(true) 과 거짓(false), 조건문에서 자주 사용
조건문에서 자주 사용
*!!(느낌표두개)를 값앞에 붙이면 불리언값으로 변환해줌
let foo = true;
console.log(foo); // true
foo = false;
console.log(foo); // false
!!foo; // false
[mdn공식문서]
Boolean - JavaScript | MDN
Boolean 객체는 불리언 값을 감싸고 있는 객체입니다.
developer.mozilla.org
🔸 undefined 타입
개발자가 의도적으로 할당하기 위한 값이 이니라 자바스크립트 엔진이 변수를 초기화할 때 사용하는 값
let foo;
console.log(foo) // undefined
[mdn공식문서]
🔸 null 타입
값이 없다는 것을 의도적으로 명시할 때 사용하는 값
*함수가 유효한 값을 반환할 수 없는 경우 명시적으로 null을 반환하기도 함
*자바스크립트는 대소문자를 구별하므로 NULL,Null등과 다름!
let foo = 'Lee';
foo = null;
*텅텅 비어있는 undefined타입과 null타입이 헷갈리다면🤔 밑에 그림 참고!
*undefined와 null을 typeof 연산자로 변수의 타입을 비교하면 null타입은 object로 나옴! (초기 자바스크립트 버그)
let a;
let b = null;
typeof a; // undefined
typeof b; // object
[mdn공식문서]
Null - MDN Web Docs Glossary: Definitions of Web-related terms | MDN
In computer science, a null value represents a reference that points, generally intentionally, to a nonexistent or invalid object or address. The meaning of a null reference varies among language implementations.
developer.mozilla.org
🔸 symbol 타입
- ES6에서 추가된 변경 불가능한 원시 타입의 값
- 고유한 식별자
- 주로 이름의 충돌 위험이 없는 유일한 프로퍼티 키를 만들기 위해 사용
*문자열을 key로 사용하면 키의 값이 노출되므로 캡슐화(정보 은닉)차원에서 장점!
// 심볼 mySymbol은 이름의 충돌 위험이 없는 유일한 프로퍼티 키
let mySymbol = Symbol();
console.log(mySymbol); // Symbol()
console.log(typeof mySymbol); // symbol
// 전역 Symbol 레지스트리에 foo라는 키로 저장된 Symbol이 없으면 새로운 Symbol 생성
const s1 = Symbol.for('foo');
// 전역 Symbol 레지스트리에 foo라는 키로 저장된 Symbol이 있으면 해당 Symbol을 반환
const s2 = Symbol.for('foo');
console.log(s1 === s2); // true
[mdn공식문서]
Symbol - JavaScript | MDN
Symbol 은 생성자가 symbol 원시 값을 반환하는 내장 객체입니다. symbol 원시 값은 심볼 값, 혹은 짧게 심볼이라고만 부르며 고유함이 보장됩니다. 심볼은 객체에 속성을 추가할 때 고유한 키를 부여
developer.mozilla.org
[참고]mdn 공식문서
JavaScript의 타입과 자료구조 - JavaScript | MDN
모든 프로그래밍 언어에는 내장된 자료구조가 존재하지만, 보통 그 내용은 언어마다 다릅니다. 이 글에서는 JavaScript에서 사용할 수 있는 내장 자료구조와 그 속성에 대해 알아보겠습니다. 그러
developer.mozilla.org
객체타입
여러가지 데이터를 묶어둘 수 있음, {key와 value}로 이루어져 있음
let apple = {
name : '사과',
color : 'red'
};
⭐자바스크립트는 객체 기반의 언어이며, 자바스크립트를 이루고 있는 거의 모든것이 객체!
자바스크립트의 모든 값은 데이터 타입을 갖는데 데이터 타입이 필요한 이유🤔
- 값을 저장할 때 확보해야 하는 메모리 공간의 크기를 결정하기 위해
- 값을 참조할 때 한 번에 읽어 들여야 할 메모리 공간의 크기를 결정하기 위해
- 메모리에서 읽어 들인 2진수를 어떻게 해석할지 결정하기 위해
값은 메모리에 저장하고 참조할 수 있어야 한다! 그러면 확보해야 할 메모리 공간의 크기를 결정해야 함🟨
전에 작성글에서 메모리 구조는 Code / Data / Stack / Heap으로 되어 있다고 했는데
컴퓨터의 구성요소🖥️, 메모리
컴퓨터의 구성요소🖥️🔸하드디스크(저장장치)🔸연산(읽고계산)🔸메모리(임시)메모리🟨어플리케이션을 열고 무언가를 처리하는데는 메모리상에 데이터를 보관, 읽기, 쓰기 메모리 구조
bom-na.tistory.com
원시타입은 Stack, 객체는 Heap에 저장됨!
* 원시 타입 값은 고정된 크기를 가지며, 크기가 작아 스택 메모리에서 빠르게 접근할 수 있음
* 힙은 크기가 가변적인 데이터를 저장하는데 적합하며, 객체는 크기가 가변적이기 때문에 힙 메모리에 저장
* 다만, 객체에 대한 "참조"는 스택에 저장됨
=>즉, 스택에는 힙에 있는 객체의 주소를 가리키는 참조 값이 저장
let num = 10;
let obj = { name: "John" };
let obj2 = obj;
혼자 이해하려고 그렸는데 똥손... 참고만 해주세용,,,,😭(0x0000주소는 예시)
'자바스크립트' 카테고리의 다른 글
[JS]함수(함수란,함수 선언문, 함수 표현식, 생성자 함수, 화살표 함수) (0) | 2024.10.07 |
---|---|
[JS]제어문(반복문) (0) | 2024.10.07 |
[JS]제어문(조건문) (0) | 2024.10.07 |
[JS]기본 문법(변수) (0) | 2024.10.01 |
[JS]자바스크립트란 (1) | 2024.10.01 |