🌸06μž₯. 데이터 νƒ€μž…

βœ…6.1 데이터 νƒ€μž…(data type)

πŸ‘‰ 데이터 νƒ€μž…μ€ κ°’μ˜ μ’…λ₯˜λ₯Ό λ§ν•œλ‹€.
πŸ‘‰ μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ λͺ¨λ“  값은 데이터 νƒ€μž…μ„ κ°–λŠ”λ‹€.
ꡬ뢄
데이터 νƒ€μž…
μ„€λͺ…

숫자(number)νƒ€μž…

숫자. μ •μˆ˜μ™€ μ‹€μˆ˜ ꡬ뢄 없이 ν•˜λ‚˜μ˜ μˆ«μžνƒ€μž…λ§Œ 쑴재

λ¬Έμžμ—΄(string)νƒ€μž…

λ¬Έμžμ—΄

μ›μ‹œνƒ€μž…

λΆˆλ¦¬μ–Έ(boolean)νƒ€μž…

논리적 μ°Έ(true)κ³Ό κ±°μ§“(false)

undefined νƒ€μž…

var ν‚€μ›Œλ“œλ‘œ μ„ μ–Έλœ λ³€μˆ˜μ— μ•”λ¬΅μ μœΌλ‘œ ν• λ‹Ήλ˜λŠ” κ°’

null νƒ€μž…

값이 μ—†λ‹€λŠ” 것을 μ˜λ„μ μœΌλ‘œ λͺ…μ‹œν•  λ•Œ μ‚¬μš©ν•˜λŠ” κ°’

κ°μ²΄νƒ€μž…

μ›μ‹œ νƒ€μž…μ„ μ œμ™Έν•œ λͺ¨λ“  것

βœ…6.2 μžλ°”μŠ€ν¬λ¦½νŠΈκ°€ μ œκ³΅ν•˜λŠ” νƒ€μž…

숫자 νƒ€μž…

μžλ°”μŠ€ν¬λ¦½νŠΈλŠ”Β ν•˜λ‚˜μ˜ 숫자 νƒ€μž…λ§Œ μ‘΄μž¬ν•œλ‹€.
  • ECMAScript에 λ”°λ₯΄λ©΄, 숫자 νƒ€μž…μ˜ 값은 배정밀도 64λΉ„νŠΈ λΆ€λ™μ†Œμˆ˜μ  ν˜•μ‹μ„ λ”°λ₯Έλ‹€.

    • 즉, λͺ¨λ“  수λ₯Ό μ‹€μˆ˜λ‘œ μ²˜λ¦¬ν•œλ‹€.

    • λ”°λΌμ„œ μ•„λž˜μ˜ 상황을 μ£Όμ˜ν•΄μ•Όν•œλ‹€.

    console.log(0.1 + 0.2); // 0.30000000000000004
    console.log(0.1 + 0.2 == 0.3); //false
  • μΆ”κ°€μ μœΌλ‘œ 3κ°€μ§€ νŠΉλ³„ν•œ 값도 ν‘œν˜„ν•  수 μžˆλ‹€.

    // 숫자 νƒ€μž…μ˜ μ„Έ κ°€μ§€ νŠΉλ³„ν•œ κ°’
    console.log(10 / 0); // Infinity : μ–‘μ˜ λ¬΄ν•œλŒ€
    console.log(10 / -0); // -Infinity : 음의 λ¬΄ν•œλŒ€
    console.log(1 * "String"); // NaN : μ‚°μˆ  μ—°μ‚° λΆˆκ°€ (not a Number)

λ¬Έμžμ—΄ νƒ€μž…

  • λ¬Έμžμ—΄μ΄ ν•œλ²ˆ μƒμ„±λ˜λ©΄, κ·Έ λ¬Έμžμ—΄μ€ λ³€κ²½ν•  수 μ—†λ‹€. (feat. λ³€κ²½ λΆˆκ°€λŠ₯ν•œ κ°’(immutable value))

  • μž‘μ€λ”°μ˜΄ν‘œ('') , 큰 λ”°μ˜΄ν‘œ(""), λ°±ν‹±(``) 으둜 ν…μŠ€νŠΈλ₯Ό 감싼닀.

ν…œν”Œλ¦Ώ λ¦¬ν„°λŸ΄

  • ES6λΆ€ν„° λ„μž…λœ μƒˆλ‘œμš΄ λ¬Έμžμ—΄ ν‘œκΈ°λ²•μ΄λ‹€.

  • ν…œν”Œλ¦Ώ λ¦¬ν„°λŸ΄μ€ λŸ°νƒ€μž„(runtime) 에 일반 λ¬Έμžμ—΄λ‘œ λ³€ν™˜λ˜μ–΄ 처리되고 λ°±ν‹±(``)을 μ‚¬μš©ν•΄ ν‘œν˜„ν•œλ‹€.

    1. 멀티라인 λ¬Έμžμ—΄(muti-line string)

2. ν‘œν˜„μ‹ μ‚½μž…(expression interpolation)

λ¬Έμžμ—΄μ€ + μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•΄ μ—°κ²°ν•  수 μžˆμ§€λ§Œ, ν‘œν˜„μ‹ μ‚½μž…μ„ 톡해 λ”μš± 가독성 μ’‹κ²Œ μ‘°ν•©ν•  수 μž‡λ‹€.

λΆˆλ¦¬μ–Έ νƒ€μž…

undefined νƒ€μž…

  • λ³€μˆ˜ μ„ μ–Έ μ‹œ, μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진이 μ•”λ¬΅μ μœΌλ‘œ undefined둜 μ΄ˆκΈ°ν™”ν•œλ‹€.

    • 즉, λ³€μˆ˜ 선언에 μ˜ν•΄ ν™•λ³΄λœ λ©”λͺ¨λ¦¬ 곡간을 처음 할당이 μ΄λ€„μ§ˆ λ•ŒκΉŒμ§€ 빈 μƒνƒœ(garbage κ°’)둜 두지 μ•Šκ³  undefined둜 μ΄ˆκΈ°ν™”ν•œλ‹€.

  • λ§Œμ•½ 아무것도 μ—†λŠ” 빈 값을 μ“°κ³ μ‹Άλ‹€λ©΄, null을 μ‚¬μš©ν•˜λ©΄ λœλ‹€.

null νƒ€μž…

  • λ³€μˆ˜μ— null을 ν• λ‹Ή == λ³€μˆ˜κ°€ 이전에 μ°Έμ‘°ν•˜λ˜ 값을 더이상 μ°Έμ‘°ν•˜μ§€ μ•Šκ² λ‹€.

    • μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진은 λˆ„κ΅¬λ„ μ°Έμ‘°ν•˜μ§€ μ•ŠλŠ” λ©”λͺ¨λ¦¬ 곡간에 λŒ€ν•΄ κ°€λΉ„μ§€ μ½œλ ‰μ…˜μ„ μˆ˜ν–‰ν•  것

  • ν•¨μˆ˜κ°€ μœ νš¨ν•œ 값을 λ°˜ν™˜ν•  수 μ—†λŠ” κ²½μš°μ—λ„ λͺ…μ‹œμ μœΌλ‘œ null을 λ°˜ν™˜ν•œλ‹€.

    • HTML μš”μ†Œλ₯Ό 검색해 λ°˜ν™˜ν•˜λŠ” document.querySelectorλ©”μ„œλ“œκ°€ 쑰합에 λΆ€ν•©ν•˜λŠ” HTMLμš”μ†Œλ₯Ό 검색할 수 μ—†λŠ” 경우, μ—λŸ¬ λŒ€μ‹  null λ°˜ν™˜

μ‹¬λ²Œ νƒ€μž…

  • 주둜 이름과 μΆ©λŒν•  μœ„ν—˜μ΄ μ—†λŠ” 객체의 μœ μΌν•œ ν”„λ‘œνΌν‹° ν‚€λ₯Ό λ§Œλ“€κΈ° μœ„ν•΄ μ‚¬μš©ν•œλ‹€.

  • Symbolν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•΄ μƒμ„±ν•œλ‹€.

  • μƒμ„±λœ μ‹¬λ²Œ 값은 외뢀에 λ…ΈμΆœλ˜μ§€ μ•Šκ³  λ‹€λ₯Έ κ°’κ³Ό μ ˆλŒ€ μ€‘λ³΅λ˜μ§€ μ•ŠλŠ” 유일무이 값이닀.

객체 νƒ€μž…

βœ…6.3 데이터 νƒ€μž…μ˜ ν•„μš”μ„±

  • μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진은 datatype에 따라 μ •ν•΄μ§„ 크기의 λ©”λͺ¨λ¦¬ 곡간을 ν™•λ³΄ν•œλ‹€.

  • λ”°λΌμ„œ, λ³€μˆ˜μ— ν• λ‹Ήλ˜λŠ” κ°’μ˜ datatype에 따라 확보해야 ν•  λ©”λͺ¨λ¦¬ κ³΅κ°„μ˜ 크기가 κ²°μ •λœλ‹€.

  • "λ©”λͺ¨λ¦¬ κ³΅κ°„μ˜ 크기" = λ©”λͺ¨λ¦¬ μ…€μ˜ 개수(byte 수)

βœ…6.4 동적 타이핑

동적 νƒ€μž… μ–Έμ–΄

  • ν˜„μž¬ λ³€μˆ˜μ— ν• λ‹Ήλ˜μ–΄ μžˆλŠ” 값에 μ˜ν•΄ λ³€μˆ˜μ˜ νƒ€μž…μ΄ λ™μ μœΌλ‘œ κ²°μ •λœλ‹€.

  • var, const, let ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•΄μ„œ λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜λŠ” 것일 뿐, μ‹€μ§ˆμ μΈ κ°’μ˜ νƒ€μž…μ€ λŸ°νƒ€μž„(runtime)μ‹œ ν• λ‹Ήλ˜λŠ” 값에 μ˜ν•΄ κ²°μ •λœλ‹€.

  • λ°˜λ©΄μ—, 정적 νƒ€μž… μ–Έμ–΄(C, Java λ“±)λŠ” λ³€μˆ˜ μ„ μ–Έ μ‹œμ μ— νƒ€μž…μ΄ κ²°μ •λ˜κ³  λ³€μˆ˜μ˜ νƒ€μž…μ„ λ³€κ²½ν•  수 μ—†λ‹€ . 그리고 컴파일 μ‹œμ μ— νƒ€μž… 체크(μ„ μ–Έν•œ 데이터 νƒ€μž…μ— λ§žλŠ” 값을 ν• λ‹Ήν–ˆλŠ”μ§€ κ²€μ‚¬ν•˜λŠ” 처리)λ₯Ό μˆ˜ν–‰ν•œλ‹€.

동적 νƒ€μž… μ–Έμ–΄μ˜ 단점

  • λ³΅μž‘ν•œ ν”„λ‘œκ·Έλž¨μ—μ„œλŠ” λ³€ν™”ν•˜λŠ” λ³€μˆ˜ 값을 μΆ”μ ν•˜κΈ° μ–΄λ €μšΈ 수 μžˆλ‹€.

  • κ°’μ˜ 변경에 μ˜ν•΄ νƒ€μž…λ„ μ–Έμ œλ“ μ§€ 변경될 수 μžˆλ‹€. β†’ 값을 ν™•μΈν•˜κΈ° μ „μ—λŠ” νƒ€μž…μ„ ν™•μ‹ ν•  수 μ—†λ‹€.

  • 개발자의 μ˜λ„μ™€λŠ” 상관없이 μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진에 μ˜ν•΄ μ•”λ¬΅μ μœΌλ‘œ νƒ€μž…μ΄ μžλ™μœΌλ‘œ λ³€ν™˜λ˜κΈ°λ„ ν•œλ‹€.

Last updated