/
πŸ“™

JavaScript Word

JavaScript
Table of contents
  • μƒˆλ‘œ λ‚˜μ˜€λŠ” λ‹¨μ–΄λŠ” ν•΄λ‹Ή μƒ‰μ…˜ 상단 λΈ”λ‘μΈμš©κ΅¬ μ•ˆμ— λ„£λŠ”λ‹€.
  • μƒ‰μ…˜ 상단 λΈ”λ‘μΈμš©κ΅¬μ—μ„œ μ€‘μš”ν•œ λ‹¨μ–΄λŠ” ꡡ게 ν‘œμ‹œν•œλ‹€.

λ¦¬ν„°λŸ΄κ³Ό ν‘œν˜„μ‹ 그리고 μ‹λ³„μžμ™€ λ³€μˆ˜

literal, expression, evaluation, operator, value, variable, identifier, declarations, assignment, constant

λ¦¬ν„°λŸ΄(literal)은 μ†ŒμŠ€ μ½”λ“œμ—μ„œ ν‘œν˜„μ‹(expression)으둜 평가(evaluation) λ˜κ±°λ‚˜ ν‘œν˜„μ‹μ˜ 일뢀가 될 수 μžˆλ‹€.

ν‘œν˜„μ‹μ€ λ¦¬ν„°λŸ΄κ³Ό μ—°μ‚°μž(operator)둜 이루어져 μžˆλ‹€.

ν‘œν˜„μ‹μ€ ν‰κ°€λ˜μ–΄ κ°’(value)이 될 수 μžˆλ‹€.

λ³€μˆ˜ μ„ μ–Έ ν‚€μ›Œλ“œ(var, let, const)둜 λ³€μˆ˜(variable)에 μ‹λ³„μž(identifier)λ₯Ό 바인딩 ν•œλ‹€.

μ‹λ³„μžλŠ” μ„ μ–Έλ¬Έ(λ³€μˆ˜ μ„ μ–Έλ¬Έ, ν•¨μˆ˜ μ„ μ–Έλ¬Έ)μ—μ„œλ§Œ μ‚¬μš©λœλ‹€.

μ‹λ³„μžλ₯Ό λ§Œλ“€μ–΄ λ‚΄λŠ” 일을 μ„ μ–Έ(declaration)이라고도 ν•  수 μžˆλ‹€.

λͺ¨λ“  μ‹λ³„μžλŠ” μ „μ—­ 객체의 ν”„λ‘œνΌν‹°κ°€ λœλ‹€.

λͺ¨λ“  λ³€μˆ˜ 선언은 undefined둜 μ΄ˆκΈ°ν™” 값이 ν• λ‹Ή λœλ‹€.

μ„ μ–Έλœ λ³€μˆ˜μ— ν• λ‹Ή μ—°μ‚°μž(=)λ₯Ό μ΄μš©ν•΄ 값을 ν• λ‹Ή(assignment) ν•  수 μžˆλ‹€.
(μ΄λ•Œ λ³€μˆ˜λŠ” κ°’μ˜ λ©”λͺ¨λ¦¬ κ³΅κ°„μ˜ μœ„μΉ˜λ₯Ό κ°€λ₯΄ν‚¨λ‹€, λ³€μˆ˜κ°€ λ©”λͺ¨λ¦¬ 곡간은 μ•„λ‹ˆλ‹€)

μ‹λ³„μžλ₯Ό μ΄μš©ν•΄ λ³€μˆ˜λ₯Ό ν˜ΈμΆœν•˜μ—¬ 값을 μ‚¬μš© ν•  수 μžˆλ‹€.

μˆ˜ν•™μ  의미의 μƒμˆ˜κ°€ μ•„λ‹ˆλΌ μž¬ν• λ‹Ήμ„ λͺ»ν•˜λŠ” λ³€μˆ˜λ₯Ό μƒμˆ˜(constant)라고 λΆ€λ₯Έλ‹€.
(μž¬ν• λ‹Ήμ„ ν•  수 μ—†μ–΄μ„œ λ³€μˆ˜μ— μ €μž₯된 값을 λ³€κ²½ν•  수 μ—†λ‹€λ©΄ λ³€μˆ˜κ°€ μ•„λ‹ˆλΌ μƒμˆ˜λΌ λΆ€λ₯Έλ‹€)

데이터 νƒ€μž…μ—λŠ” μ›μ‹œν˜•κ³Ό μ°Έμ‘°ν˜•μ΄ μžˆλ‹€

data type, primitive data type, reference type, object type, immutable value, pass-by-value, mutable value, pass-by-reference, type casting, implicit coercion, type coercion

μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ μžλ£Œν˜•(data type)μ—λŠ” 크게 μ›μ‹œ 데이터 νƒ€μž…(primitive data type)κ³Ό μ°Έμ‘° νƒ€μž… / 객체 νƒ€μž…(reference type / object type)으둜 λΆ„λ₯˜ λœλ‹€.

μ›μ‹œ 데이터 νƒ€μž…μ€ λ³€κ²½ λΆˆκ°€λŠ₯ν•œ κ°’(immutable value), 값에 μ˜ν•œ 전달(pass-by-value)이고 string, number, boolean, undefined, null, symbol, bigint이 μžˆλ‹€.

string
큰 λ”°μ˜΄ν‘œ(β€œ) ν˜Ήμ€ μž‘μ€ λ”°μ˜΄ν‘œ(β€˜)둜 묢인 0개 μ΄μƒμ˜ λ¬Έμžμ—΄μ„ ν‘œν˜„

number
숫자λ₯Ό ν‘œν˜„, νŠΉμˆ˜ν•œ 값인 NaN(Not a Number)도 μžˆλ‹€.
ν‘œν˜„ν•  수 μžˆλŠ” μ •μˆ˜μ˜ ν•œκ³„λŠ” Β±253 이닀.

boolean
논리 true / falseλ₯Ό ν‘œν˜„

undefined
μ΄ˆκΈ°ν™” κ³Όμ •μ—μ„œ ν• λ‹Ήλ˜λŠ” νŠΉμˆ˜ν•œ κ°’, μ„ μ–Έ 이후 값을 ν• λ‹Ήν•˜μ§€ μ•Šμ€ λ³€μˆ˜λŠ”undefinedλ₯Ό 가진닀.

null
μ˜λ„μ μœΌλ‘œ 값이 μ—†λ‹€λŠ” 것을 λͺ…μ‹œν•  λ•Œ μ‚¬μš© (ν•¨μˆ˜κ°€ ν˜ΈμΆœλ˜μ—ˆμœΌλ‚˜ μœ νš¨ν•œ 값을 λ°˜ν™˜ν•  수 μ—†λŠ” 경우, λͺ…μ‹œμ μœΌλ‘œ null을 λ°˜ν™˜ν•˜κΈ°λ„ ν•œλ‹€)

symbol
μœ μΌν•œ μ‹λ³„μžλ₯Ό λ§Œλ“€κΈ° μœ„ν•΄ μ‚¬μš©λ˜λ©° λͺ¨λ“  심볼 값은 κ³ μœ ν•˜κ³ , 심볼을 λ°˜ν™˜ν•˜λŠ” Symbol() λ©”μ†Œλ“œλ‘œ λ§Œλ“€μˆ˜ μžˆλ‹€.

bigint
길이에 상관없이 μ •μˆ˜λ₯Ό λ‚˜νƒ€λ‚Ό 수 있고 μ •μˆ˜ λ¦¬ν„°λŸ΄ 끝에 n을 뢙이면 λ§Œλ“€ 수 μžˆλ‹€.
(μˆ«μžν˜•μ΄ 가진 ν•œκ³„λ³΄λ‹€ 더 큰 μ •μˆ˜λ₯Ό ν‘œν˜„ν•˜κΈ° μœ„ν•΄ λ§Œλ“€μ–΄μ‘Œκ³  κ°€μž₯ μ΅œκ·Όμ— μΆ”κ°€λœ μ›μ‹œ 데이터 νƒ€μž…μ΄λ‹€)

μ°Έμ‘° νƒ€μž… / 객체 νƒ€μž…μ€ λ³€κ²½ κ°€λŠ₯ν•œ κ°’(mutable value), 참쑰에 μ˜ν•œ 전달(pass-by-reference)이닀.

μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” μ›μ‹œ 데이터 νƒ€μž… 값을 μ œμ™Έν•œ λͺ¨λ“  κ°’μ˜ 데이터 νƒ€μž…μ€ object이닀.
(ν•¨μˆ˜ λ˜ν•œ object μ΄μ§€λ§Œ typeof둜 ν™•μΈν•˜λ©΄ function으둜 λ‚˜μ˜¨λ‹€)

κ°’μ˜ νƒ€μž…μ€ λ‹€λ₯Έ νƒ€μž…μœΌλ‘œ λ³€ν™˜ν•  수 μžˆλ‹€.

κ°œλ°œμžκ°€ μ˜λ„μ μœΌλ‘œ νƒ€μž…μ„ λ³€ν™˜ν•˜λŠ” 것을 λͺ…μ‹œμ  νƒ€μž… λ³€ν™˜, νƒ€μž… μΊμŠ€νŒ…(type casting)이라 ν•œλ‹€.

μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진에 μ˜ν•΄ μžλ™μœΌλ‘œ νƒ€μž…μ΄ λ³€ν™˜ λ˜λŠ” 것을 암묡적 νƒ€μž… λ³€ν™˜(implicit coercion), νƒ€μž… κ°•μ œ λ³€ν™˜(type coercion)이라고 ν•œλ‹€.

κ°μ²΄λŠ” ν”„λ‘œνΌν‹°λ₯Ό μ‹£κ³ 

object, property, method, property key, property value, symbol

μƒνƒœ 데이터와 λ™μž‘μ„ ν•˜λ‚˜μ˜ 논리적인 λ‹¨μœ„λ‘œ 묢은 볡합적인 자료 ꡬ쑰λ₯Ό 객체(object)라 ν•œλ‹€.

μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ 객체λ₯Ό μƒμ„±ν•˜λŠ” 5가지 방법

  • 객체 λ¦¬ν„°λŸ΄
  • μƒμ„±μž ν•¨μˆ˜
  • 클래슀 (ES6)
  • Object μƒμ„±μž ν•¨μˆ˜ (λΉ„ ꢌμž₯)
  • Object.create λ©”μ†Œλ“œ (λΉ„ ꢌμž₯)

객체 λ‚΄λΆ€λŠ” μƒνƒœ 데이터인 ν”„λ‘œνΌν‹°(property)와 λ™μž‘μ„ ν•˜λŠ” λ©”μ„œλ“œ(method)둜 이루어져 μžˆλ‹€.

ν”„λ‘œνΌν‹°λŠ” ν”„λ‘œνΌν‹° ν‚€(property key)와 ν”„λ‘œνΌν‹° κ°’(property value)으둜 이루어져 μžˆλ‹€.

ν”„λ‘œνΌν‹° ν‚€λŠ” ν”„λ‘œνΌν‹°μ˜ μ‹λ³„μžλ‘œ μ‚¬μš©λ˜κ³  빈 λ¬Έμžμ—΄μ„ ν¬ν•¨ν•˜λŠ” λͺ¨λ“  λ¬Έμžμ—΄ λ˜λŠ” symbol κ°’λ§Œ μ‚¬μš©ν•œλ‹€. λ˜ν•œ 문자 μ—΄μ΄μ§€λ§Œ 'λ₯Ό μƒλž΅ν•œλ‹€. 그리고 μ‹λ³„μž λͺ…λͺ…κ·œμΉ™μ— 따라 이름을 μ •ν•œλ‹€.

ν”„λ‘œνΌν‹° 값은 μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œ μ‚¬μš©ν•  수 μžˆλŠ” λͺ¨λ“  값을 κ°€μ§ˆ 수 μžˆλ‹€.

ν”„λ‘œνΌν‹°μ˜ 값이 ν•¨μˆ˜μΈ 것을 λ©”μ„œλ“œλΌκ³  ν•œλ‹€. (ν•¨μˆ˜λ„ κ°’μœΌλ‘œ 평가 될수 μžˆλ‹€)


  • λ¦¬ν„°λŸ΄
  • 데이터 νƒ€μž…
    • ν”„λΌμ΄λ―Έν‹°λΈŒ 데이터 νƒ€μž…
    • 였브젝트 νƒ€μž… / 레퍼런슀 νƒ€μž…
  • λ³€μˆ˜
  • μ‹λ³„μž
  • ν˜Έμ΄μŠ€νŒ…
    • ν•¨μˆ˜ ν˜Έμ΄μŠ€νŒ…
    • λ³€μˆ˜ ν˜Έμ΄μŠ€νŒ…
  • κ°’
  • ν‘œν˜„μ‹
  • λ¬Έ(statement)
  • μ—°μ‚°μž
  • ν• λ‹Ήλ¬Έ
  • μ œμ–΄λ¬Έ
  • νƒ€μž… λ³€ν™˜
    • 암묡적 νƒ€μž…λ³€ν™˜
    • λͺ…μ‹œμ  νƒ€μž…λ³€ν™˜
  • 객체
    • 일반 객체
    • ν•¨μˆ˜ 객체
    • μ „μ—­ 객체
    • 객체의 생성 방법
      • 객체 λ¦¬ν„°λŸ΄
      • μƒμ„±μž ν•¨μˆ˜ 이용
  • ν”„λ‘œνΌν‹°
    • ν”„λ‘œνΌν‹° ν‚€
    • ν”„λ‘œνΌν‹° κ°’
    • 데이터 ν”„λ‘œνΌν‹°
    • μ•‘μ„ΈμŠ€ ν”„λ‘œνΌν‹°
    • 정적 ν”„λ‘œνΌν‹°
  • ν•¨μˆ˜
    • νŒŒλΌλ―Έν„°
    • μ•„κ·œλ¨ΌνŠΈ
    • ν•¨μˆ˜κ°€ κ°€μ§€λŠ” ν”„λ‘œνΌν‹° 5가지
  • λ©”μ†Œλ“œ
  • λ‚΄λΆ€ λ©”μ†Œλ“œ
  • 정적 λ©”μ†Œλ“œ
  • μƒμ„±μž ν•¨μˆ˜
  • μŠ€μ½”ν”„
    • μŠ€μ½”ν”„ 체인
    • λ ‰μ‹œμ»¬ μŠ€μ½”ν”„
  • ν”„λ‘œν† νƒ€μž…
    • ν”„λ‘œν† νƒ€μž… 체인
  • this
  • μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ
  • ν΄λ‘œμ €
  • μ•„κ·œλ¨ΌνŠΈ
  • 비동기
  • 이벀트 루프
logo
Things I've Learned