[javascript] 자료형 타입과 종류

gaeundev·2021년 3월 7일
0

javascript

목록 보기
1/1

공부와 기록을 위해 작성하는 글입니다.



원시 타입 : 기본자료형

변경 불가능한 값. 즉 읽기 전용 값. 원시 값은 어떤 일이 있어도 불변한다.
이 불변한다는 것은 변수를 재할당하는 것이 안된다는 것이 아니다.
원시값을 할당한 변수에 새로운 원시 값을 재할당 하면 메모리 공간에 저장되어있는 재할당 이전의 원시 값을 변경하는 것이 아니라 새로운 메모리 공간을 확보하고 재할당한 원시 값을 저장한 후, 변수는 새롭게 재할당한 원시 값을 가리킨다. 이때 변수가 참조하던 메모리 공간의 주소가 바뀐다. 변수가 참조하던 메모리 공간의 주소가 변경된 이뉴는 변수에 할당된 원시 값이 변경 불가능한 값이기 때문이다.


| boolean

true와 false 존재

false 인 경우 : 0, -0, null, false, NaN, undefined, 빈 문자열, 객체의 초기값

NaN을 보니 isNaN함수가 생각났다. 예외처리로 자주 사용되는 isNaN과 Number.isNaN 차이에 대한 예시!!

isNaN('hello world'); // true
Number.isNaN('hello world'); // false

| null

어떤 값이 의도적으로 비어있음을 표현


| undefined

값을 할당하지 않은 변수
메서드와 선언도 평가할 변수가 값을 할당받지 않은 경우에 undefined를 반환


| number

숫자. 정수와 실수 구분 없이 하나의 숫자 타입만 존재함.

숫자타입의 값은 배정밀도 64비트 부동소수점 형식을 따른다고 되어있다. 즉, 모든 수는 실수로 처리하며, 정수만 표현하기 위한 데이터 타입이 별도로 존재하지 않음


| string

텍스트 데이터를 나타내는 데 사용함

0개 이상의 16비트 유니코드 문자(UTF-16)의 집합으로 전 세계 대부분의 문자를 표현할 수 있다.

작은따옴표('), 큰따옴표("), 백틱(`) 으로 텍스트를 감싼다.
문자열을 따옴표로 감싸지 않으면 자바스크립트 엔진은 키워드나 식별자 같은 토큰으로 인식한다.


| symbol

ES6에서 추가된 7번째 타입이다.

심벌 값은 다른 값과 중복되지 않는 유일무이한 값이다. 따라서 주로 이름이 충돌할 위험이 없는 객체의 유일한 프로퍼티 키를 만들기 위해 사용한다.

심벌 외의 원시 값은 리터럴을 통해 생성하지만 심벌은 Symbol 함수를 호출해 생성한다.
이때 생성된 심벌 값은 외부에 노출되지 않으며, 다른 값과 절대 중복되지 않는 유일무이한 값이다.

let key = Symbol('key');
console.log(typeof key); //symbol

let boj = {};

obj[key] = 'value';
console.log(obj[key]); //value



심벌 값을 프로퍼티 키로 사용하여 생성한 프로퍼티는 은닉 가능

for...in 문, Object.keys, Object.getOwnPropertyNames 메서드로 찾을 수 없다.

const obj = {
    [Symbol('mySymbol')]: 1
}

for (const key in obj) {
    console.log(key); // 아무것도 출력되지 않음
}

console.log(Object.keys(obj)); // []
console.log(Object.getOwnPropertyNames(obj)); // []

추가로..

Symbol.for 메서드
애플리케이션 전역에서 중복되지 않는 유일무이한 상수인 심벌 값을 단 하나만 생성하여 전역 심벌 레지스트리를 통해 공유할 수 있다.


🙌

여기까지만 보면 상수를 만들어서 사용할 때 유용하겠다는 생각이 든다. 하지만 아직 제대로 이해가 된 것은 아니다.. 좀 더 공부할 것!



객체 타입

| Object

0개 이상의 프로퍼티로 구성된 집합이며, 프로퍼티는 키와 값으로 구성된다.

let person = {
    name: 'Lee',
    age: 20
}

👉 name과 age가 프로퍼티의 키, 'Lee', 20 이 프로퍼티의 값



ES6부터는 프로퍼티 축약 표현이 가능!!

let name = 'Lee', age = 20;

const obj = { name, age };

console.log(obj) // {name: 'Lee', age: 20}

👉 변수이름과 프로퍼티 키가 동일한 이름일 때 프로퍼티 키를 생략하고, 프로퍼티 키는 변수 이름으로 자동생성된다.



출처

웹사이트
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects

도서
모던 자바스크립트 Deep Dive

0개의 댓글