JavaScript : Data Types

m_ngyeongΒ·2023λ…„ 12μ›” 14일
0

JavaScript

λͺ©λ‘ 보기
3/9
post-thumbnail

🍌 JavaScript


Primitive Types

*Literal(λ¦¬ν„°λŸ΄) : μ†ŒμŠ€ μ½”λ“œμ˜ κ³ μ •λœ κ°’ 즉, μƒμˆ˜ 값을 λ‚˜νƒ€λ‚΄λŠ” ν‘œκΈ°λ²•μ΄λ‹€.

πŸ”’ Number

  • 64λΉ„νŠΈ λΆ€λ™μ†Œμˆ˜μ μœΌλ‘œ ν‘œν˜„, λ°°μ—΄ μΈλ±μŠ€μ™€ λΉ„νŠΈ 연산은 32λΉ„νŠΈ μ •μˆ˜λ‘œ ν‘œν˜„
  • μ΅œλŒ€κ°’ : 1.7976931348623157e+308
  • μ΅œμ†Ÿκ°’ : -1.7976931348623157e+308
  • 2μ§„μˆ˜, 8μ§„μˆ˜, 16μ§„μˆ˜μ— λŒ€ν•œ 데이터 νƒ€μž…μ΄ λ³„λ„λ‘œ μ—†κΈ° λ•Œλ¬Έμ— 10μ§„μˆ˜λ‘œ 계산
  • μˆ«μžλŠ” λͺ¨λ‘ μ‹€μˆ˜(μ†Œμˆ˜)둜 계산
let integer = 10; 		 // μ •μˆ˜
let double = 10.12; 	 // μ‹€μˆ˜
let negative = -20; 	 // 음의 μ •μˆ˜
let binary = 0b01000001; // 2μ§„μˆ˜
let octal = 0o101; 		 // 8μ§„μˆ˜
let hex = 0x41; 		 // 16μ§„μˆ˜

console.log(binary === octal); // true
console.log(octal === hex);    // true
console.log(1 === 1.0); 	   //true

μ†Œμˆ˜μ  계산 였λ₯˜

μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ μ†Œμˆ˜μ  연산을 ν•˜λ©΄, μ˜λ„μΉ˜μ•Šμ€ 결과값을 얻을 수 μžˆλŠ”λ° μ΄μœ λŠ” λΆ€λ™μ†Œμˆ˜μ  λ°©μ‹μ˜ μ΄μ§„μˆ˜ 처리 λ•Œλ¬Έμ΄λ‹€.

console.log(0.1 + 0.2) // 0.30000000000000004

μ»΄ν“¨ν„°λŠ” 계산할 λ•Œ '10진법'이 μ•„λ‹Œ 0κ³Ό 1만 μ‚¬μš©ν•˜λŠ” '2진법'을 μ‚¬μš©ν•œλ‹€. 10진법을 2μ§„λ²•μœΌλ‘œ λ°”κΎΈλŠ” λ³€ν™˜κ³Όμ •μ—μ„œ μ†Œμˆ˜ 쀑 μΌλΆ€λŠ” 이 κ³Όμ •μ—μ„œ λ¬΄ν•œμ†Œμˆ˜κ°€ λ˜μ–΄λ²„λ¦°λ‹€. ν•˜μ§€λ§Œ 컴퓨터 λ©”λͺ¨λ¦¬μ—λŠ” ν•œκ³„κ°€ μžˆμ–΄ λ¬΄ν•œμ†Œμˆ˜λ₯Ό λ‹€ 담지 λͺ»ν•˜κ³  쀑간에 μž˜λΌμ„œ μœ ν•œ μ†Œμˆ˜λ‘œ μ €μž₯해버린닀. μ΄λ•Œ, λΆ€λ™μ†Œμˆ˜μ  κ³„μ‚°μ—μ„œ λ‹€μŒκ³Ό 같은 였λ₯˜κ°€ λ°œμƒν•œλ‹€.

  • 정밀도 손싀
    2μ§„μˆ˜λ‘œ μ†Œμˆ˜λ₯Ό ν‘œν˜„ν•  λ•Œ, μ†Œμˆ˜μ  μ΄ν•˜ μžλ¦Ώμˆ˜κ°€ λ¬΄ν•œνžˆ λ°˜λ³΅λ˜λŠ” κ²½μš°κ°€ λ°œμƒν•  수 μžˆμ§€λ§Œ, μ»΄ν“¨ν„°λŠ” μœ ν•œν•œ 자릿수둜 μ²˜λ¦¬ν•˜λ―€λ‘œ 일뢀 μžλ¦Ώμˆ˜λŠ” μƒλž΅λ˜μ–΄ 정밀도가 떨어짐
  • 반올림 였차
    λΆ€λ™μ†Œμˆ˜μ  λ°©μ‹μœΌλ‘œ 연산을 μ²˜λ¦¬ν•  λ•Œ, μ†Œμˆ˜μ  μ΄ν•˜ 자릿수λ₯Ό λ°˜μ˜¬λ¦Όν•˜μ—¬ μ²˜λ¦¬ν•˜λŠ”λ° λ°˜μ˜¬λ¦Όν•  자릿수 μ΄ν•˜μ˜ 값에 따라 κ²°κ³Όκ°€ λ‹¬λΌμ§€λ―€λ‘œ μ—°μ‚° 결과와 λŒ€μ†Œ 비ꡐ에도 μ˜€μ°¨κ°€ λ°œμƒν•  수 있음

toFixed()와 Math.round() λ©”μ„œλ“œλ₯Ό μ‚¬μš©ν•˜μ—¬ ν•΄κ²°ν•  수 μžˆλ‹€.

πŸ”  Strings

  • UTF-16λ₯Ό λ‚˜μ—΄ν•œ 것
  • μž‘μ€λ”°μ˜΄ν‘œ('), ν°λ”°μ˜΄ν‘œ(")λ₯Ό λ¬Έμžμ—΄ μ•žλ’€μ— λΆ™μ—¬μ„œ ν‘œν˜„
  • ""(빈 λ¬Έμžμ—΄) " 아무것도 ν¬ν•¨ν•˜μ§€ μ•ŠλŠ” λ¬Έμžμ—΄
  • escape sequence : \νŠΉμ •λ¬Έμž, ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄ νŠΉμ„±μƒ ν‘œν˜„ν•  수 μ—†λŠ” νŠΉμ • μ œμ–΄ μ½”λ“œλ‚˜ 문자λ₯Ό ν‘œν˜„ν•΄μ€Œ

Boolean Type : true / false

  • 논리값을 ν‘œν˜„ν•˜λŠ” λ³€μˆ˜λͺ… μ•žμ— isλ₯Ό λΆ™μž„
    (예: let isMouseDown = true;)

Special Value

Infinity

let positiveInf = 10 / 0;
console.log(positiveInf); // Infinity(μ–‘μ˜ λ¬΄ν•œλŒ€)

let negativeInf = 10 / -0;
console.log(negativeInf); //  -Infinity(음의 λ¬΄ν•œλŒ€)

NaN(Not of Number)

: 숫자둜 ν‘œν˜„ν•  수 μ—†λŠ” λΆ€μ •κ°’

let nan = 1 * "string"; // μ‚°μˆ  μ—°μ‚° λΆˆκ°€
console.log(nan); // NaN

nudefined

: μ •μ˜λ˜μ§€ μ•ŠλŠ” μƒνƒœλ₯Ό 뜻

  • 값을 아직 ν• λ‹Ήν•˜μ§€ μ•Šμ€ λ³€μˆ˜μ˜ κ°’
  • μ—†λŠ” 객체의 ν”„λ‘œνΌν‹°, λ°°μ—΄μ˜ μš”μ†Œλ₯Ό 읽으렀고 μ‹œλ„ν–ˆμ„ λ•Œμ˜ κ°’
  • 아무것도 λ°˜ν™˜ν•˜μ§€ μ•ŠλŠ” ν•¨μˆ˜κ°€ λ°˜ν™˜ν•˜λŠ” κ°’
  • ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν–ˆμ„ λ•Œ 전달받지 λͺ»ν•œ 인수 κ°’

null

: 아무것도 μ—†μŒμ„ ν‘œν˜„ν•œ λ¦¬ν„°λŸ΄
ν”„λ‘œκ·Έλž¨μ—μ„œ 무언가λ₯Ό κ²€μƒ‰ν–ˆμ§€λ§Œ 찾지 λͺ»ν•˜μ˜€μ„ λ•Œ μ „λ‹¬ν•˜κΈ° μœ„ν•œ κ°’μœΌλ‘œ μ‚¬μš©λ¨

Symbol()

: 자기 μžμ‹ μ„ μ œμ™Έν•œ κ·Έ μ–΄λ–€ 값과도 λ‹€λ₯Έ μœ μΌλ¬΄μ΄ν•œ κ°’

  • Symbol()을 ν˜ΈμΆœν•  λ•Œλ§ˆλ‹€ μƒˆλ‘œμš΄ κ°’ 생성
let symbol1 = Symbol(); // symbol1 생성
let symbol2 = Symbol(); // symbol2 생성
console.log(symbol1 == symbol2); // false
  • Symbol()에 인수λ₯Ό μ „λ‹¬ν•˜μ—¬ μƒμ„±λœ μ‹¬λ³Όμ˜ μ„€λͺ…을 덧뢙일 수 있음
const HEART = Symbol("Heart");
console.log(HEART.toString()); // Symbol(Heart)

Symbol.for(key)

: λ¬Έμžμ—΄κ³Ό μ—°κ²°λœ 심볼 생성

  • Symbol()κ³Ό λŒ€μ‘°μ μœΌλ‘œ, Symbol.for() ν•¨μˆ˜λŠ” μ „μ—­ 심볼 λ ˆμ§€μŠ€νŠΈλ¦¬ λͺ©λ‘μ—μ„œ μ‚¬μš© κ°€λŠ₯ν•œ 심볼을 생성
  • Symbol.for()λŠ” ν˜ΈμΆœν•  λ•Œλ§ˆλ‹€ μƒˆλ‘œμš΄ 심볼을 μƒμ„±ν•˜μ§€λŠ” μ•ŠμŒ
  • λ ˆμ§€μŠ€νŠΈλ¦¬μ—μ„œ 주어진 keyλ₯Ό κ°–λŠ” 심볼이 이미 μ‘΄μž¬ν•˜λŠ” 경우 ν•΄λ‹Ήν•˜λŠ” 심볼이 λ°˜ν™˜λ˜κ³ , 주어진 ν‚€λ₯Ό κ°–λŠ” 심볼이 μ‘΄μž¬ν•˜μ§€ μ•ŠλŠ” 경우, μƒˆλ‘œμš΄ μ „μ—­ 심볼을 생성
console.log(Symbol.for('bar') === Symbol.for('bar')); // true
console.log(Symbol('bar') === Symbol('bar')); // false
  • Symbol.keyFor()λ₯Ό 톡해 심볼과 μ—°κ²°λœ λ¬Έμžμ—΄μ„ ꡬ뢄할 수 있음
let symbol1 = Symbol.for("club"); // symbol1 생성
let symbol2 = Symbol("club"); // symbol2 생성
console.log(Symbol.keyFor(symbol1)); // club
console.log(Symbol.keyFor(symbol2)); // undefined

Template Literals : backtick(`)

  • String.raw() : νƒœκ·Έ ν•¨μˆ˜, escape sequence(\n, \t, \\...) 문자λ₯Ό κ·ΈλŒ€λ‘œ 좜λ ₯
console.log(String.raw`Man errs as long as \nhe strives.`); // Man errs as long as \nhe strives.
  • Formatter(보간 ν‘œν˜„μ‹) : Placeholder(${...})
    *Placeholder(ν”Œλ ˆμ΄μŠ€ν™€λ”)λž€ μ™ΈλΆ€μ—μ„œ μ£Όμ–΄μ§€λŠ” 값을 ν‘œν˜„μ‹μ— λ°˜μ˜ν•˜κ³ μž ν•  λ•Œ, 값이 λ“€μ–΄κ°ˆ 수 μžˆλ„λ‘ λ§ˆλ ¨ν•œ μž₯μ†Œ
let num1 = 2, num2 = 3;
console.log(`${num1} + ${num2} = ${num1 + num2}`); // 2 + 3 = 5


μ°Έκ³ λ¬Έν—Œ,
μ΄μ†Œ νžˆλ‘œμ‹œ, γ€Žλͺ¨λ˜ μžλ°”μŠ€ν¬λ¦½νŠΈ μž…λ¬Έγ€, μ„œμž¬μ› μ—­, κΈΈλ²—, 2019,
https://minify.tistory.com/48,
https://velog.io/@yellowbutter0327/μžλ°”μŠ€ν¬λ¦½νŠΈμ†Œμˆ˜μ κ³„μ‚°μ˜€λ₯˜,

profile
μ‚¬μš©μž κ²½ν—˜ ν–₯상과 지속적인 μ„±μž₯을 μΆ”κ΅¬ν•˜λŠ” ν”„λ‘ νŠΈμ—”λ“œ 개발자 ΚšΘ‰Ιž

0개의 λŒ“κΈ€