6์žฅ ๋ฐ์ดํ„ฐ ํƒ€์ž…(Data Type)

  • ES6๋ถ€ํ„ฐ๋Š” 7๊ฐœ์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์ œ๊ณตํ•œ๋‹ค.
  • 7๊ฐœ์˜ ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ ์›์‹œ ํƒ€์ž…(Primitive Type)๊ณผ ๊ฐ์ฒด ํƒ€์ž…(Object/Reference Type)์œผ๋กœ ๋ถ„๋ฅ˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฐ์ดํ„ฐ ํƒ€์ž…

์ˆซ์ž ํƒ€์ž…(Number Type)

  • C์–ธ์–ด๋‚˜ Java์˜ ๊ฒฝ์šฐ ์ •์ˆ˜์™€ ์‹ค์ˆ˜๋ฅผ ๊ตฌ๋ถ„ํ•˜์—ฌ int, long, float, double ๋“ฑ๊ณผ ๊ฐ™์€ ๋‹ค์–‘ํ•œ ์ˆซ์ž ํƒ€์ž…์„ ์ œ๊ณตํ•œ๋‹ค.
  • Javascript๋Š” ๋…ํŠนํ•˜๊ฒŒ ํ•˜๋‚˜์˜ ์ˆซ์ž ํƒ€์ž…๋งŒ ์กด์žฌํ•œ๋‹ค.
  • Javascript๋Š” ๋ชจ๋“  ์ˆ˜๋ฅผ ์‹ค์ˆ˜๋กœ ์ฒ˜๋ฆฌํ•˜๋ฉฐ, ์ •์ˆ˜๋งŒ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด ๋ณ„๋„๋กœ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.

์ˆซ์ž ํƒ€์ž…์€ ์ถ”๊ฐ€์ ์œผ๋กœ ์„ธ ๊ฐ€์ง€ ํŠน๋ณ„ํ•œ ๊ฐ’๋„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • Infinity: ์–‘์˜ ๋ฌดํ•œ๋Œ€
  • -Infinity: ์Œ์˜ ๋ฌดํ•œ๋Œ€
  • NaN: ์‚ฐ์ˆ  ์—ฐ์‚ฐ ๋ถˆ๊ฐ€(Not a Number)
console.log(10 / 0) // Infinity
console.log(10 / -0) // -Infinity
console.log(1 * 'String') // NaN

๋ฌธ์ž์—ด ํƒ€์ž…(String)

  • ๋ฌธ์ž์—ด ํƒ€์ž…์€ ํ…์ŠคํŠธ ๋ฐ์ดํ„ฐ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐ ์‚ฌ์šฉํ•œ๋‹ค.
  • ๋ฌธ์ž์—ด์€ ์ž‘์€๋”ฐ์˜ดํ‘œ('', Single Quotation), ํฐ ๋”ฐ์˜ดํ‘œ("", Double Quotation), ๋ฐฑํ‹ฑ(``, backtick)์œผ๋กœ ํ…์ŠคํŠธ๋ฅผ ๊ฐ์‹ผ๋‹ค.
  • Javascript์˜ ๋ฌธ์ž์—ด์€ ์›์‹œ ํƒ€์ž…(Primitive Type)์ด๋ฉฐ, ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฐ’(Immutable Value)์ด๋‹ค.
var string;
string = '๋ฌธ์ž์—ด' // ์ž‘์€ ๋”ฐ์˜ดํ‘œ
string = "๋ฌธ์ž์—ด" // ํฐ ๋”ฐ์˜ดํ‘œ
string = `๋ฌธ์ž์—ด` // ๋ฐฑํ‹ฑ

ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด(Template Literal)

  • ES6๋ถ€ํ„ฐ ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด์ด๋ผ๋Š” ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด ํ‘œ๊ธฐ๋ฒ•์ด ๋„์ž…๋˜์—ˆ๋‹ค.
  • ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด์€ ๋ฉ€ํ‹ฐ๋ผ์ธ ๋ฌธ์ž์—ด, ํ‘œํ˜„์‹ ์‚ฝ์ž…, ํƒœ๊ทธ๋„ ํ…œํ”Œ๋ฆฟ ๋“ฑ ํŽธ๋ฆฌํ•œ ๋ฌธ์ž์—ด ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.
  • ์ผ๋ฐ˜ ๋ฌธ์ž์—ด๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ ์ž‘์€๋”ฐ์˜ดํ‘œ('') ๋˜๋Š” ํฐ ๋”ฐ์˜ดํ‘œ("") ๊ฐ™์€ ์ผ๋ฐ˜์ ์ธ ๋”ฐ์˜ดํ‘œ ๋Œ€์‹  ๋ฐฑํ‹ฑ(``)์„ ์‚ฌ์šฉํ•˜์—ฌ ํ‘œํ˜„ํ•œ๋‹ค.

๋ฉ€ํ‹ฐ๋ผ์ธ ๋ฌธ์ž์—ด

  • ์ผ๋ฐ˜ ๋ฌธ์ž์—ด ๋‚ด์—์„œ๋Š” ์ค„ ๋ฐ”๊ฟˆ(๊ฐœํ–‰)์ด ํ—ˆ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค.
  • ์ผ๋ฐ˜ ๋ฌธ์ž์—ด์—์„œ ์ค„ ๋ฐ”๊ฟˆ ํ˜น์€ ๊ณต๋ฐฑ์„ ํ‘œํ˜„ํ•˜๋ ค๋ฉด ๋ฐฑ ์Šฌ๋ž˜์‹œ\๋กœ ์‹œ์ž‘ํ•˜๋Š” ์ด์Šค์ผ€์ดํ”„ ์‹œํ€€์Šค(Escape Sequence)๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค.

๋ฉ€ํ‹ฐ๋ผ์ธ ๋ฌธ์ž์—ด

  • ์ผ๋ฐ˜ ๋ฌธ์ž์—ด๊ณผ ๋‹ฌ๋ฆฌ ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด ๋‚ด์—์„œ๋Š” ์ด์Šค์ผ€์ดํ”„ ์‹œํ€€์Šค๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ ๋„ ์ค„ ๋ฐ”๊ฟˆ์ด ํ—ˆ์šฉ๋˜๋ฉฐ, ๋ชจ๋“  ๊ณต๋ฐฑ๋„ ์žˆ๋Š” ๊ทธ๋Œ€๋กœ ์ ์šฉ๋œ๋‹ค.

ํ‘œํ˜„์‹ ์‚ฝ์ž…

  • ๋ฌธ์ž์—ด์€ + ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์—ฐ๊ฒฐ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • +๋Š” ํ”ผ์—ฐ์‚ฐ์ž ์ค‘ ํ•˜๋‚˜ ์ด์ƒ์ด ๋ฌธ์ž์—ด์ธ ๊ฒฝ์šฐ ์—ฐ๊ฒฐ ์—ฐ์‚ฐ์ž๋กœ ๋™์ž‘ํ•œ๋‹ค. ๊ทธ ์™ธ์˜ ๊ฒฝ์šฐ๋Š” ๋ง์…ˆ ์—ฐ์‚ฐ์ž๋กœ ๋™์ž‘ํ•œ๋‹ค.
var first = 'eun';
var last = 'Namgung';

console.log('My name is ' + first + ' ' + last + '.');
// My name is Eun Namgung.
  • ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด ๋‚ด์—์„œ๋Š” ํ‘œํ˜„์‹ ์‚ฝ์ž…์„ ํ†ตํ•ด ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ฌธ์ž์—ด ์‚ฝ์ž…์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด์—์„œ ํ‘œํ˜„์‹์„ ์‚ฝ์ž…ํ•˜๋ ค๋ฉด ${} ์œผ๋กœ ํ‘œํ˜„์‹์„ ๊ฐ์‹ผ๋‹ค.
var first = 'eun';
var last = 'Namgung';

console.log(`My name is ${first} ${last}.`);
//My name is Eun Namgung.
  • ์ฃผ์˜ํ•  ์ ์€, ํ‘œํ˜„์‹์˜ ํ‰๊ฐ€ ๊ฒฐ๊ณผ๊ฐ€ ๋ฌธ์ž์—ด์ด ์•„๋‹ˆ๋”๋ผ๋„ ๋ฌธ์ž์—ด๋กœ ํƒ€์ž…์ด ๊ฐ•์ œ ๋ณ€ํ™˜๋˜์–ด ์‚ฝ์ž…๋œ๋‹ค.
console.log(`1 +2 = ${1+ 2}`); // 1+2=3

๋ถˆ๋ฆฌ์–ธ ํƒ€์ž…(Boolean Type)

  • ๋ถˆ๋ฆฌ์–ธ ํƒ€์ž…์€ ๋…ผ๋ฆฌ์  ์ฐธ ํ˜น์€ ๊ฑฐ์ง“์„ ๋‚˜ํƒ€๋‚ด๋Š” true์™€ false๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.
var js = true;
console.log(js); //true

js = false;
console.log(js); // false

undefined ํƒ€์ž…

  • undefined์˜ ๊ฐ’์€ undefined๊ฐ€ ์œ ์ผํ•˜๋‹ค.
var foo;
console.log(foo); // undefined

์œ„ ์˜ˆ์ œ์—์„œ var ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋Š” ์•”๋ฌต์ ์œผ๋กœ undefined๋กœ ์ดˆ๊ธฐํ™”๋œ๋‹ค. ๋ณ€์ˆ˜ ์„ ์–ธ์— ์˜ํ•ด ํ™•๋ณด๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์ฒ˜์Œ ํ• ๋‹น์ด ์ด๋ค„์งˆ ๋•Œ๊นŒ์ง€ ๋นˆ ์ƒํƒœ๋กœ ๋‚ด๋ฒ„๋ ค ๋‘์ง€ ์•Š๊ณ  Javascript ์—”์ง„์ด undefined๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

null ํƒ€์ž…

  • null ํƒ€์ž…์˜ ๊ฐ’ ๋˜ํ•œ null์ด ์œ ์ผํ•˜๋‹ค.
  • Javascript๋Š” ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ณ„ํ•˜๊ฒŒ null์€ Null, NULL ๋“ฑ๊ณผ ๋‹ค๋ฅด๋‹ค.
  • null์€ ๋ณ€์ˆ˜์— ๊ฐ’์ด ์—†๋‹ค๋Š” ๊ฒƒ์„ ์˜๋„์ ์œผ๋กœ ํ‘œํ˜„ํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค.
  • ์œ„์—์„œ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•œ ํ›„ null์„ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์€ ์ด์ „์— ์ฐธ์กฐํ•œ ๊ฐ’์„ ๋” ์ด์ƒ ์ฐธ์กฐํ•˜์ง€ ์•Š๊ฒ ๋‹ค๋Š” ์˜๋ฏธ์ด๋‹ค.
  • ํ•จ์ˆ˜๊ฐ€ ์œ ํšจํ•œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ ๋ช…์‹œ์ ์œผ๋กœ null์„ ๋ฐ˜ํ™˜ํ•˜๊ธฐ๋„ ํ•œ๋‹ค.
var foo = 'Namgung';
foo = null;

์‹ฌ๋ฒŒ ํƒ€์ž…(Symbol Type)

  • ES6์—์„œ ์ถ”๊ฐ€๋œ 7๋ฒˆ์งธ ํƒ€์ž…์œผ๋กœ, ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ ์›์‹œ ํƒ€์ž…์˜ ๊ฐ’์ด๋‹ค.
  • ์‹ฌ๋ฒŒ ๊ฐ’์€ ๋‹ค๋ฅธ ๊ฐ’๊ณผ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ์œ ์ผ๋ฌด์ดํ•œ ๊ฐ’์ด๋‹ค. ์ฃผ๋กœ ์ด๋ฆ„์ด ์ถฉ๋Œํ•  ์œ„ํ—˜์ด ์—†๋Š” ๊ฐ์ฒด์˜ ์œ ์ผํ•œ ํ”„๋กœํผํ‹ฐ ํ‚ค๋ฅผ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•œ๋‹ค.
  • ์‹ฌ๋ฒŒ ์ด์™ธ์˜ ์›์‹œ ๊ฐ’์€ ๋ฆฌํ„ฐ๋Ÿด์„ ํ†ตํ•ด ์ƒ์„ฑํ•˜์ง€๋งŒ ์‹ฌ๋ฒŒ์€ Symbol ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ด ์ƒ์„ฑํ•œ๋‹ค.
  • ์ƒ์„ฑ๋œ ์‹ฌ๋ฒŒ ๊ฐ’์€ ์™ธ๋ถ€์— ๋…ธ์ถœ๋˜์ง€ ์•Š์œผ๋ฉฐ, ๋‹ค๋ฅธ ๊ฐ’๊ณผ ์ ˆ๋Œ€ ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ์œ ์ผ๋ฌด์ดํ•œ ๊ฐ’์ด๋‹ค.
// ์‹ฌ๋ฒŒ ๊ฐ’ ์ƒ์„ฑ
var key = Symbol('key');
console.log(typeof key); // symbol

// ๊ฐ์ฒด ์ƒ์„ฑ
var obj= {};

// ์ด๋ฆ„์ด ์ถฉ๋Œํ•  ์œ„ํ—˜์ด ์—†๋Š” ์œ ์ผ๋ฌด์ดํ•œ ๊ฐ’์ธ ์‹ฌ๋ฒŒ์„ ํ”„๋กœํผํ‹ฐ ํ‚ค๋กœ ์‚ฌ์šฉํ•œ๋‹ค.
obj[key] = 'value';
console.log(obj[key]); // value

๋ฐ์ดํ„ฐ ํƒ€์ž…์˜ ํ•„์š”์„ฑ

  • ๊ฐ’์„ ์ €์žฅํ•  ๋•Œ ํ™•๋ณดํ•ด์•ผ ํ•  ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์˜ ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด
  • ๊ฐ’์„ ์ฐธ์กฐํ•  ๋•Œ ํ•œ ๋ฒˆ์— ์ฝ์–ด ๋“ค์—ฌ์•ผ ํ•  ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์˜ ํฌ๊ธฐ๋ฅผ ๊ฒฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด
  • ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ฝ์–ด ๋“ค์ธ 2์ง„์ˆ˜๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด์„ํ• ์ง€ ๊ฒฐ์ •ํ•˜๊ธฐ ์œ„ํ•ด

๋™์  ํƒ€์ดํ•‘

์ •์  ํƒ€์ž… ์–ธ์–ด, ๋™์  ํƒ€์ž… ์–ธ์–ด

  • ์ •์  ํƒ€์ž… ์–ธ์–ด(Static Type): ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•  ๋•Œ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’์˜ ์ข…๋ฅ˜, ์ฆ‰ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์‚ฌ์ „์— ์„ ์–ธํ•ด์•ผ ํ•œ๋‹ค. ์ด๋ฅผ ๋ช…์‹œ์  ํƒ€์ž… ์„ ์–ธ(Explicit Type Declaration)์ด๋ผ ํ•œ๋‹ค.
  • ๋™์  ํƒ€์ž… ์–ธ์–ด(Dynamic Type): Javascript์˜ ๋ณ€์ˆ˜๋Š” ์„ ์–ธ์ด ์•„๋‹Œ ํ• ๋‹น์— ์˜ํ•ด ํƒ€์ž…์ด ๊ฒฐ์ •(ํƒ€์ž… ์ถ”๋ก  Type Inference)๋˜๊ณ , ์žฌํ• ๋‹น์— ์˜ํ•ด ๋ณ€์ˆ˜์˜ ํƒ€์ž…์€ ์–ธ์ œ๋“ ์ง€ ๋™์ ์œผ๋กœ ๋ณ€ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋™์  ํƒ€์ž… ์–ธ์–ด์™€ ๋ณ€์ˆ˜

  • ๋™์  ํƒ€์ž… ์–ธ์–ด์˜ ๋ณ€์ˆ˜๋Š” ๊ฐ’์˜ ๋ณ€๊ฒฝ์— ์˜ํ•ด ํƒ€์ž…๋„ ์–ธ์ œ๋“ ์ง€ ๋ณ€๊ฒฝ๋  ์ˆ˜ ์žˆ๋‹ค.
  • ๋™์  ํƒ€์ž… ์–ธ์–ด๋Š” ์œ ์—ฐ์„ฑ์€ ๋†’์ง€๋งŒ ์‹ ๋ขฐ์„ฑ์€ ๋–จ์–ด์ง„๋‹ค.
  • ๋”ฐ๋ผ์„œ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ๋•Œ ์ฃผ์˜์‚ฌํ•ญ์ด ๋งŽ์•„์ง„๋‹ค.

 

์ฐธ๊ณ ํ•˜๋ฉด ์ข‹์„ ๊ธ€

 

[๋ชจ๋“  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•Œ์•„์•ผ ํ•˜๋Š” 33๊ฐ€์ง€ ๊ฐœ๋…] 2. ์›์‹œ์ž๋ฃŒํ˜•(Primitive Types)

์˜คํ”ˆ์†Œ์Šค ๊นƒํ—ˆ๋ธŒ ์ฃผ์†Œ: https://github.com/yjs03057/33-js-concepts GitHub - yjs03057/33-js-concepts: ๋ชจ๋“  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•Œ์•„์•ผ ํ•˜๋Š” 33๊ฐ€์ง€ ๊ฐœ๋… ๋ชจ๋“  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•Œ์•„์•ผ ํ•˜๋Š” 33๊ฐ€์ง€..

eun-ng.tistory.com

 

[๋ชจ๋“  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•Œ์•„์•ผ ํ•˜๋Š” 33๊ฐ€์ง€ ๊ฐœ๋…] 4. ์•”์‹œ์  ํ˜•๋ณ€ํ™˜, ๋ช…์‹œ์  ํ˜•๋ณ€ํ™˜, Nominal,

์˜คํ”ˆ์†Œ์Šค ๊นƒํ—ˆ๋ธŒ ์ฃผ์†Œ: https://github.com/yjs03057/33-js-concepts GitHub - yjs03057/33-js-concepts: ๋ชจ๋“  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•Œ์•„์•ผ ํ•˜๋Š” 33๊ฐ€์ง€ ๊ฐœ๋… ๋ชจ๋“  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐœ๋ฐœ์ž๊ฐ€ ์•Œ์•„์•ผ ํ•˜๋Š” 33๊ฐ€์ง€..

eun-ng.tistory.com

 

๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค!