솔미는 성장중

[JS] Symbol, BigInt 본문

JavaScript

[JS] Symbol, BigInt

solming 2023. 8. 6. 19:52
728x90

📌 Symbol

변경이 불가한 데이터.

유일한 식별자를 만들어 데이터를 보호하는 용도로 사용.

실행될 때마다 고유하게 결과가  하나의 심볼 데이터로 반환된다.

 

사용형태

Symbol('설명')

'설명'은 단순 디버깅 용도. 심볼 값과는 관계 없음.

 

const sKey = Symbol('Hello') //여기서 반환된 symbol 데이터는 sKey에서만 유일하게 사용가능.
const user = {
  key: '일반 정보',
  [sKey]: '민감한 정보'
}

console.log(user.key) //일반 정보
console.log(user['key']) //일반 정보
console.log(user[sKey]) //민감한 정보
console.log(user[Symbol('Hello')]) //undefined. 위에서의 Symbol('Hello')와 다른 값
console.log(sKey) //Symbol(Hello!)

 

다른 예시)

main.js

import solmi from './solmi.js'
import { birthKey,emailKey } from './keys.js'

console.log(solmi) //객체데이터가 시각적으로 모두 출력됨.(생일, 이메일까지)
//하지만 코드상으로는 바로 출력되지 않음.
console.log(Object.keys(solmi))//['firstName', 'lastName', 'age']
for(const key in solmi){
  console.log(solmi[key]) //Solmi, Koh, 23
}

//실제 심볼 데이터를 import를 통해 갖고와야지만 코드상의 객체 데이터에서 조회해 사용 가능 
console.log(solmi[birthKey]) //Wed Oct 20 1999 20:30:00 GMT+0900 (한국 표준시)

solmi.js

import {birthKey, emailKey} from './keys.js'

export default {
  firstName: 'Solmi',
  lastName: 'Koh',
  age: 23,
  //민감한 정보는 별도 변수를 가져와 속성을 만들 수 있다. 
  [birthKey]: new Date(1999,9,20,20,30),
  [emailKey]: ['ovo10203@gmail.com', 'ovo10203@naver.com']
}

keys.js

export const birthKey = Symbol('Date of birth')
export const emailKey = Symbol('Emails')

 

 

📌 BigInt

길이 제한이 없는 정수.

숫자(number) 데이터가 안정적으로 표시할 수 있는 최대치보다 큰 정수를 표현할 수 있다.

정수 뒤에 'n'을 붙이거나 'BigInt()'를 호출해 생성

 

숫자 -> Bigint Bigint -> 숫자로 바꿔서 연산 가능

cosnt a = 10n
const b = 5

console.log(a+BigInt(b)) //15n //type은 bigint
console.log(Number(a) + b) //15 //type은 number

 

 

728x90

'JavaScript' 카테고리의 다른 글

[JS] 정규 표현식 (정규식, RegExp)  (0) 2023.08.21
[JS] 클로저 & 메모리 누수 & 콜스택, task queue  (0) 2023.08.19
[JS] 오픈 api 활용하기  (0) 2023.08.06
[JS] 기타 Web APIs  (0) 2023.08.04
[JS] 이벤트 (event)  (0) 2023.08.03