πŸ“’ [Deep Dive] 04. λ³€μˆ˜

λ½€λ‘±νŠΈμ˜Œλ“œΒ·2022λ…„ 10μ›” 23일
0
post-thumbnail

πŸ“’ [Deep Dive] 04. λ³€μˆ˜


4.1 λ³€μˆ˜λž€ 무엇인가? μ™œ ν•„μš”ν•œκ°€?

μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ 데이터λ₯Ό μž…λ ₯(input)λ°›μ•„ μ²˜λ¦¬ν•˜κ³  κ·Έ κ²°κ³Όλ₯Ό 좜λ ₯(output)함.
λ³€μˆ˜λŠ” ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—μ„œ 데이터λ₯Ό κ΄€λ¦¬ν•˜κΈ° μœ„ν•œ 핡심 κ°œλ….

[예제 04-01]

10 + 20

μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진이 [예제 04-1]μ½”λ“œλ₯Ό 평가(계산) ν•˜λ €λ©΄ 10,20,+λΌλŠ” 기호(λ¦¬ν„°λŸ΄κ³Ό μ—°μ‚°μž)의 의미λ₯Ό μ•Œκ³  μžˆμ–΄μ•Ό ν•˜κ³  10 + 20μ΄λΌλŠ” ν‘œν˜„μ‹μ˜ μ˜λ―Έλ„ νŒŒμ‹±(해석)ν• μˆ˜ μžˆμ–΄μ•Όν•¨.

  • μ»΄ν“¨ν„°λŠ” CPUλ₯Ό μ‚¬μš©ν•΄ μ—°μ‚°, λ©”λͺ¨λ¦¬λ₯Ό μ‚¬μš©ν•΄ 데이터λ₯Ό κΈ°μ–΅.
    • λ©”λͺ¨λ¦¬λŠ” 데이터λ₯Ό μ €μž₯ν•  수 μžˆλŠ” λ©”λͺ¨λ¦¬ μ…€μ˜ 집합체.
      • λ©”λͺ¨λ¦¬μ…€ ν•˜λ‚˜μ˜ 크킀 : 1λ°”μ΄νŠΈ(8λΉ„νŠΈ). 1λ°”μ΄νŠΈ λ‹¨μœ„λ‘œ 데이터λ₯Ό μ €μž₯ν•˜κ±°λ‚˜ 읽음.
        μ»΄ν“¨ν„°λŠ” λͺ¨λ“  데이터λ₯Ό μ’…λ₯˜ 상관없이 λͺ¨λ‘ 2μ§„μˆ˜λ‘œ μ €μž₯. (ν•˜λ‹¨ 그림은 νŽΈμ˜μƒ 10μ§„μˆ˜λ‘œ ν‘œκΈ°)
      • 각 셀은 고유의 λ©”λͺ¨λ¦¬ μ£Όμ†Œλ₯Ό 가짐 -> λ©”λͺ¨λ¦¬ κ³΅κ°„μ˜ μœ„μΉ˜
        λ©”λͺ¨λ¦¬ μ£Όμ†ŒλŠ” λ©”λͺ¨λ¦¬ 크기만큼 μ •μˆ˜λ‘œ ν‘œν˜„λ¨ : 0x00000000 ~ 0xFFFFFFFFF
        (e.g. 4GBλ©”λͺ¨λ¦¬ : 0~4,294,967,295)
  • [예제 04-1]의 숫자 10κ³Ό20은 μž„μ˜μ˜ λ©”λͺ¨λ¦¬ μ£Όμ†Œ(μœ„μΉ˜)에 μ €μž₯되고 CPUλŠ” 이 값을 읽어 λ“€μ—¬ μ—°μ‚° μˆ˜ν–‰ν•œλ’€ κ²°κ³Ό 값인 30도 μž„μ˜μ˜ λ©”λͺ¨λ¦¬ μ£Όμ†Œμ— μ €μž₯.
    • μ—°μ‚°κ³Ό μ—°μ‚°κ²°κ³Όκ°€ λ©”λͺ¨λ¦¬μ— μ €μž₯ λ˜μ—ˆμ§€λ§Œ μž¬μ‚¬μš© ν•  수 μ—†μŒ.
      • μž¬μ‚¬μš© ν•˜λ €λ©΄ λ©”λͺ¨λ¦¬ μ£Όμ†Œμ— 직접접근 ν•΄μ•Όμ§€λ§Œ 치λͺ…적인 였λ₯˜λ₯Ό λ°œμƒμ‹œν‚¬ κ°€λŠ₯성이 맀우 λ†’μŒ.
      • 값이 μ €μž₯될 λ©”λͺ¨λ¦¬ μ£Όμ†ŒλŠ” μ½”λ“œκ°€ 싀행될 λ•Œλ§ˆλ‹€ λ©”λͺ¨λ¦¬ 상황에따라 μž„μœΌλ‘œ 결정됨.
        -> 싀행될 λ•Œλ§ˆλ‹€ 값이 μ €μž₯될 λ©”λͺ¨λ¦¬ μ£Όμ†ŒλŠ” λ³€κ²½.

ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄λŠ” κΈ°μ–΅ν•˜κ³  싢은 값은 λ©”λͺ¨λ¦¬μ— μ €μž₯ν•˜κ³  값을 읽어 μž¬μ‚¬μš©ν•˜κΈ° μœ„ν•΄ λ³€μˆ˜λΌλŠ” λ©”μ»€λ‹ˆμ¦˜μ„ 제곡.
κ°œλ°œμžκ°€ λ©”λͺ¨λ¦¬ μ£Όμ†Œμ— 직접 μ ‘κ·Όν•  ν•„μš”κ°€ μ—†κ³  λ³€μˆ˜λ₯Ό 톡해 μ•ˆμ „ν•˜κ²Œ 값에 μ ‘κ·Ό.

πŸ“Œ λ³€μˆ˜λŠ” ν•˜λ‚˜μ˜ 값을 μ €μž₯ν•˜κΈ° μœ„ν•΄ ν™•λ³΄ν•œ λ©”λͺ¨λ¦¬ 곡간 자체λ₯Ό μ‹λ³„ν•˜κΈ° μœ„ν•΄ 뢙인 이름.
--> κ°’μ˜ μœ„μΉ˜λ₯Ό κ°€λ¦¬ν‚€λŠ” 상징적인 이름.

κ°’μ˜ 생성과 λ³€μˆ˜μ— ν• λ‹Ή

[예제 04-02]

var result = 10 + 20;
  • [예제 04-2] μ½”λ“œλŠ” 연산을 톡해 μƒμ„±λœ κ°’ 30은 λ©”λͺ¨λ¦¬κ³΅κ°„에 μ €μž₯되고 이 λ©”λͺ¨λ¦¬ 곡간에 μ €μž₯된 κ°’ 30을 λ‹€μ‹œ 읽어 μž¬μ‚¬μš©ν•  수 μžˆλ„λ‘ 값이 μ €μž₯된 λ©”λͺ¨λ¦¬ 곡간에 상징적인 이름을 뢙인 것이 λ³€μˆ˜.
    • result: λ³€μˆ˜λͺ….(λ³€μˆ˜ 이름)
    • 30 : λ³€μˆ˜ κ°’.
    • λ³€μˆ˜μ— 값을 μ €μž₯ν•˜λŠ” 것 : ν• λ‹Ή.(λŒ€μž…, μ €μž₯)
    • λ³€μˆ˜μ•  μ €μž₯된 값을 읽어 λ“€μ΄λŠ” 것 : μ°Έμ‘°.
  • λ³€μˆ˜ 이름은 λ³€μˆ˜μ— μ €μž₯된 값은 의미λ₯Ό νŒŒμ•…ν• μˆ˜ 있게 μ§€μ–΄μ„œ 개발자의 μ˜λ„λ₯Ό λͺ…ν™•ν•˜κ²Œ μ΄ν•΄ν• μˆ˜μžˆκ²Œ 함 -> 가독성을 높이고 ν˜‘μ—…κ³Ό ν’ˆμ§ˆ ν–₯상에 도움을 쀌.

4.2 μ‹λ³„μž

  • μ‹λ³„μž
    • μ‹λ³„μžλŠ” λ©”λͺ¨λ¦¬ 곡간에 μ €μž₯λ˜μ–΄ μžˆλŠ” μ–΄λ–€ 값을 κ΅¬λ³„ν•΄μ„œ 식별해 λ‚΄μ•Όν•˜κ³  μ–΄λ–€ 값이 μ €μž₯λ˜μ–΄ μžˆλŠ” λ©”λͺ¨λ¦¬ μ£Όμ†Œλ₯Ό κΈ°μ–΅.
      • μ‹λ³„μžλ‘œ 값을 κ΅¬λ³„ν•΄μ„œ μ‹λ³„ν•œλ‹€λŠ” 것은 μ‹λ³„μžκ°€ κΈ°μ–΅ν•˜κ³  μžˆλŠ” λ©”λͺ¨λ¦¬ μ£Όμ†Œλ₯Ό 톡해 λ©”λͺ¨λ¦¬ 곡간에 μ €μž₯된 값에 μ ‘κ·Όν•  수 μžˆλ‹€λŠ” 의미.
    • λ©”λͺ¨λ¦¬ μ£Όμ†Œμ— 뢙인 이름.(λ³€μˆ˜, ν•¨μˆ˜, 클래슀 λ“±μ˜ 이름)
  • μœ„ κ·Έλ¦Όμ—μ„œ μ‹λ³„μž resultλŠ” κ°’ 0이 μ €μž₯λ˜μ–΄μžˆλŠ” λ©”λͺ¨λ¦¬ μ£Όμ†Œ 0x0669F913을 기얡해야함.
    μ‹λ³„μžλŠ” 값이 μ €μž₯λ˜μ–΄μžˆλŠ” λ©”λͺ¨λ¦¬ μ£Όμ†Œμ™€ 맀핑 관계. 이 맀핑 정보도 λ©”λͺ¨λ¦¬μ— μ €μž₯.
  • λ³€μˆ˜, ν•¨μˆ˜, 클래슀 λ“±μ˜ 이름(μ‹λ³„μž)은 넀이밍 κ·œμΉ™('4.7 넀이밍 κ·œμΉ™'μ°Έκ³ )을 μ€€μˆ˜ν•΄μ•Ό ν•˜λ©° 선언을 톡해 μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진에 μ‹λ³„μžμ˜ 쑴재λ₯Ό μ•Œλ¦Ό.

4.3 λ³€μˆ˜ μ„ μ–Έ

  • 값을 μ €μž₯ν•˜κΈ° μœ„ν•œ λ©”λͺ¨λ¦¬ 곡간을 ν™•λ³΄ν•˜κ³  λ³€μˆ˜ 이름과 ν™•λ³΄λœ λ©”λͺ¨λ¦¬ κ³΅κ°„μ˜ μ£Όμ†Œλ₯Ό μ—°κ²°ν•΄μ„œ 값을 μ €μž₯ν•  수 있게 μ€€λΉ„.
    ν™•λ³΄λœ λ©”λͺ¨λ¦¬ 곡간은 확보가 ν•΄μ œλ˜κΈ° μ „κΉŒμ§€λŠ” 아무도 μ‚¬μš©ν• μˆ˜ 없도둝 보호 됨.
  • λ³€μˆ˜ μ„ μ–Έ ν‚€μ›Œλ“œ
    (ν‚€μ›Œλ“œλŠ” μˆ˜ν–‰ν•  λ™μž‘μ„ κ·œμ •ν•œ λͺ…λ Ήμ–΄. var ν‚€μ›Œλ“œλŠ” μƒˆλ‘œμš΄ λ³€μˆ˜λ₯Ό 생성할 것을 μ§€μ‹œ.)
    • var
      • 단점('15.1 var ν‚€μ›Œλ“œλ‘œ μ„ μ–Έν•œ λ³€μˆ˜'μ°Έκ³ ) : 블둝 레벨 μŠ€μ½”ν”„λ₯Ό μ§€μ›ν•˜μ§€ μ•Šκ³  ν•¨μˆ˜ 레벨 μŠ€μ½”ν”„λ₯Ό 지원해 μ˜λ„μΉ˜ μ•Šκ²Œ μ „μ—­ λ³€μˆ˜κ°€ μ„ μ–Έλ˜μ–΄ λΆ€μž‘μš© λ°œμƒ.(Scope μŠ€μ½”ν”„)
      ↓ ES6μ—μ„œ λ„μž… -> var ν‚€μ›Œλ“œμ˜ μ—¬λŸ¬ 단점 보완.
    • let
    • const
[예제 04-03]

var score; // λ³€μˆ˜ μ„ μ–Έλ¬Έ
  • [예제 04-03]λŠ” λ‹€μŒκ³Ό 같이 λ³€μˆ˜ 이름을 λ“±λ‘ν•˜κ³  값을 μ €μž₯ν•  λ©”λͺ¨λ¦¬ 곡간을 확보.
    • λͺ¨λ“  μ‹λ³„μž(λ³€μˆ˜ν¬ν•¨)λŠ” μ‹€ν–‰ μ»¨ν…μŠ€νŠΈμ— 등둝됨.
      • μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ : μ‹λ³„μžμ™€ μŠ€μ½”ν”„ 관리.
        μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진이 μ†ŒμŠ€μ½”λ“œλ₯Ό ν‰κ°€ν•˜κ³  μ‹€ν–‰ν•˜κΈ° μœ„ν•΄ ν•„μš”ν•œ ν™˜κ²½ 제곡, μ½”λ“œμ˜ μ‹€ν–‰ κ²°κ³Όλ₯Ό μ‹€μ œλ‘œ κ΄€λ¦¬ν•˜λŠ” μ˜μ—­.
      • λ³€μˆ˜ 이름과 λ³€μˆ˜ 값은 μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ 내에 ν‚€(key)/κ°’(value)ν˜•μ‹μΈ 객체둜 λ“±λ‘λ˜μ–΄ 관리.

  • var ν‚€μ›Œλ“œμ˜ λ³€μˆ˜ μ„ μ–Έμ˜ 단계
    var ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•œ λ³€μˆ˜ 선언은 μ„ μ–Έ 단계와 μ΄ˆκΈ°ν™” 단계가 λ™μ‹œμ— 진행.
    • μ„ μ–Έ 단계 : λ³€μˆ˜ 이름을 등둝해 μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진에 λ³€μˆ˜μ˜ 쑴재λ₯Ό μ•Œλ¦Ό.
      • [예제 04-03], κ·Έλ¦Ό : λ³€μˆ˜ 이름 score 등둝.
    • μ΄ˆκΈ°ν™” 단계 : 값을 μ €μž₯ν•˜κΈ° μœ„ν•œ λ©”λͺ¨λ¦¬ 곡간을 ν™•λ³΄ν•˜κ³  μ•”λ¬΅μ μ„λ‘œ undefined(μ›μ‹œ νƒ€μž…μ˜ κ°’)λ₯Ό ν• λ‹Ήν•΄ μ΄ˆκΈ°ν™”.
      • [예제 04-03], κ·Έλ¦Ό : scoreλ³€μˆ˜μ— undefined ν• λ‹Ή.
      • λ³€μˆ˜κ°€ μ„ μ–Έλœν›„ 졜초둜 undefined 값을 ν• λ‹Ή.
        γ„΄ μ–΄λ– ν•œ 값을 ν• λ‹Ήν•˜μ§€ μ•Šμ•„λ„ undefinedλΌλŠ” 값을 갖짐.
      • μ“°λ ˆκΈ° κ°’ : μ΄ˆκΈ°ν™” 단계λ₯Ό κ±°μΉ˜μ§€ μ•ŠμœΌλ©΄ ν™•λ³΄λœ λ©”λͺ¨λ¦¬ 곡간에 이전에 μ‚¬μš©ν–ˆλ˜ κ°’.
        γ„΄ λ³€μˆ˜ μ„ μ–Έν›„ λ°”λ‘œ μ‚¬μš©μ‹œ μ“°λ ˆκΈ°κ°’μ΄ λ‚˜μ˜¬ 수 μžˆμ–΄ varν‚€μ›Œλ“œλŠ” μ•”λ¬΅μ μœΌλ‘œ μ΄ˆκΈ°ν™”λ₯Ό 진행을 ν•΄ μ•ˆμ „ν•¨.
  • ReferenceError(μ°Έμ‘°μ—λŸ¬) : μ„ μ–Έν•˜μ§€ μ•Šμ€ μ‹λ³„μžμ— μ ‘κ·Όν•˜λ©΄ μ‹λ³„μžλ₯Ό 톡해 값을 μ°Έμ‘°ν•˜λ € ν–ˆμ§€λ§Œ μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진이 λ“±λ‘λœ μ‹€λ³„μžλ₯Ό 찾을 수 없을 λ•Œ λ°œμƒν•˜λŠ” μ—λŸ¬.

4.4 λ³€μˆ˜ μ„ μ–Έμ˜ μ‹€ν–‰ μ‹œμ κ³Ό λ³€μˆ˜ ν˜Έμ΄μŠ€νŒ…

μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진은 λŸ°νƒ€μž„μ΄ μ‹€ν–‰λ˜κΈ°μ „ μ†ŒμŠ€ν‰κ°€κ³Όμ •(23.2'μ†ŒμŠ€μ½”λ“œμ˜ 평가와 μ‹€ν–‰'μ°Έκ³ )μ—μ„œ λͺ¨λ“  선언문을 μ‹€ν–‰ν•œ λ’€ 선언문을 μ œμ™Έν•˜κ³  μ†ŒμŠ€μ½”λ“œλ₯Ό 순차적 싀행함.

  • λŸ°νƒ€μž„ : μžλ°”μŠ€ν¬λ¦½νŠΈ μ½”λ“œκ°€ 인터프리터(2.5'μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ νŠΉμ§•'μ°Έκ³ )에 μ˜ν•΄ ν•œμ€„μ”© 순차적으둜 μ‹€ν–‰λ˜λŠ” μ‹œμ .

πŸ“Œ λ³€μˆ˜ ν˜Έμ΄μŠ€νŒ… :
λ³€μˆ˜ 선언문이 λŸ°νƒ€μž„ μ΄μ „λ‹¨κ³„μ—μ„œ 싀행됨 -> μ½”λ“œμ˜ μ„ λ‘λ‘œ λŒμ–΄ μ˜¬λ €μ§„ κ²ƒμ²˜λŸΌ λ™μž‘ν•˜λŠ”κ²ƒμ²˜λŸΌ λ³΄μ΄λŠ” μžλ°”μŠ€ν¬λ¦½νŠΈ 고유의 νŠΉμ§•.

즉, μžλ°”μŠ€ν¬λ¦½νŠΈ 엔진이 λŸ°νƒ€μž„ 이전인 μ†ŒμŠ€ν‰κ³Όκ°€μ •μ—μ„œ λ³€μˆ˜ 선언문을 ν¬ν•¨ν•œ
λͺ¨λ“  ν‚€μ›Œλ“œ(var, let, const, function, function*, class)λ₯Ό μ‚¬μš©ν•΄ μ„ μ–Έν•˜λŠ”
λͺ¨λ“  μ‹λ³„μžλŠ” ν˜Έμ΄μŠ€νŒ…μ΄ 됨.

4.5 κ°’μ˜ ν• λ‹Ή

[예제 04-04]

var score; // λ³€μˆ˜ μ„ μ–Έ
score = 80; // κ°’μ˜ ν• λ‹Ή

// 단좕문
var score = 80; // λ³€μˆ˜ μ„ μ–Έκ³Ό κ°’μ˜ ν• λ‹Ή

μ—°μ‚°μž =λ₯Ό μ‚¬μš©ν•΄ μš°λ³€μ˜ 값을 μ’Œλ³€μ˜ λ³€μˆ˜μ— ν• λ‹Ή(λŒ€μž…, μ €μž₯)함.
λ³€μˆ˜ μ„ μ–Έκ³Ό κ°’μ˜ 할당을 λ‚˜λˆ„μ–΄ ν‘œν˜„ν•œ μ½”λ“œμ™€ ν•˜λ‚˜λ‘œ λ‹¨μΆ•ν•œ μ½”λ“œλŠ” 2개문으둜 각각 λ‚˜λˆ„μ–΄ λ™μΌν•˜κ²Œ λ™μž‘.
λ³€μˆ˜ 선언은 λŸ°νƒ€μž„ 이전에 λ¨Όμ € μ‹€ν–‰λ˜μ§€λ§Œ κ°’μ˜ 할당은 λŸ°νƒ€μž„μ— μ‹€ν–‰λ˜κΈ° λ•Œλ¬Έ.

[예제 04-05]

console.log(num); // 2. undefined

num = 10;  // 3. κ°’μ˜ ν• λ‹Ή : λŸ°νƒ€μž„μ—μ„œ 순차적으둜 진행
var num;  // 1. λ³€μˆ˜ μ„ μ–Έ : λŸ°νƒ€μž„ 보닀 λ¨Όμ € μ‹€ν–‰(ν˜Έμ΄μŠ€νŒ…)

console.log(num); // 4.100
  • [예제 04-05] μ½”λ“œ μ‹€ν–‰ κ³Όμ •

    1. var num; μ‹λ³„μž num에 undefined둜 μ΄ˆκΈ°ν™”λœ λ©”λͺ¨λ¦¬ 곡간 μ£Όμ†Œ μ €μž₯.

    2. console.log(num); undefined 좜λ ₯.

    3. var num; num에 10을 ν• λ‹Ήν•œ μƒˆλ‘œμš΄ λ©”λͺ¨λ¦¬ 곡간 μ£Όμ†Œ μ €μž₯.

    4. console.log(num); 10 좜λ ₯.

4.6 κ°’μ˜ μž¬ν• λ‹Ή

이미 값이 ν• λ‹Ήλ˜μ–΄ μžˆλŠ” λ³€μˆ˜μ— μƒˆλ‘œμš΄ 값을 λ˜λ‹€μ‹œ ν• λ‹Ή. -> λ‹€λ₯Έκ°’μœΌλ‘œ λ³€κ²½λ˜κΈ° λ•Œλ¬Έμ— λ³€μˆ˜.
λ³€μˆ˜λŠ” μ„ μ–Έκ³Ό λ™μ‹œμ— undefined둜 μ΄ˆκΈ°ν™”λ˜κΈ° λ•Œλ¬Έμ— 처음 값을 ν• λ‹Ήν•˜λŠ” 것도 사싀은 μž¬ν• λ‹Ή.
μƒμˆ˜(const) : 값이 μž¬ν• λ‹Ήμ΄ μ•ˆλ˜μ„œ λ³€μˆ˜μ— μ €μž₯된 값을 λ³€κ²½ν•  수 μ—†μŒ.

  • κ°’μ˜ μž¬ν• λ‹Ή κ³Όμ •

    1. λ³€μˆ˜μ„ μ–Έ μ „

    2. λ³€μˆ˜ μ„ μ–Έ :
      값을 μ €μž₯ν•˜κΈ° μœ„ν•΄ 일정 크기의 λ©”λͺ¨λ¦¬ 곡간 확보(λ‹€λ₯Έ ν”„λ‘œκ·Έλž¨ 이 곡간을 μ‚¬μš©,μΉ¨ν•΄ X).
      undefinedλ₯Ό ν• λ‹Ήν•΄ μ΄ˆκΈ°ν™”.
      ν™•λ³΄λœ λ©”λͺ¨λ¦¬ κ³΅κ°„μ˜ μ£Όμ†Œλ₯Ό num이 κΈ°μ–΅

    3. κ°’μ˜ ν• λ‹Ή :
      undefined κ°€ μ €μž₯λ˜μ–΄ 있던 λ©”λͺ¨λ¦¬κ³΅κ°„을 μ§€μš°κ³ 
      μƒˆλ‘œμš΄ λ©”λͺ¨λ¦¬ 곡간을 확보해 10을 ν• λ‹Ήν•˜κ³  μƒˆλ‘œμš΄ λ©”λͺ¨λ¦¬ 곡간 μ£Όμ†Œλ₯Ό num이 κΈ°μ–΅.

    4. κ°’μ˜ μž¬ν• λ‹Ή :
      10이 μ €μž₯λ˜μ–΄ 있던 λ©”λͺ¨λ¦¬ 곡간을 μ§€μš°κ³ 
      μƒˆλ‘œμš΄ λ©”λͺ¨λ¦¬ 곡간을 확보해 1000을 ν• λ‹Ήν•˜κ³  μƒˆλ‘œμš΄ λ©”λͺ¨λ¦¬ 곡간 μ£Όμ†Œλ₯Ό num이 κΈ°μ–΅.

  • num의 이전 값인 undefinedκ³Ό 10은 더 이상 ν•„μš”κ°€ μ—†μ–΄ 가비지 μ½œλ ‰ν„°μ— μ˜ν•΄ λ©”λͺ¨λ¦¬μ—μ„œ μžλ™ν•΄μ œκ°€ λ˜λ‚˜ μ–Έμ œ ν•΄μ œλ μ§€λŠ” μ˜ˆμΈ‘ν• μˆ˜ μ—†μŒ.

    • 가비지 μ½œλ ‰ν„° : ν• λ‹Ήλ˜μ—ˆλ˜ λ©”λͺ¨λ¦¬ 곡간을 주기적으둜 κ²€μ‚¬ν•˜μš” 더 이상 μ‚¬μš©λ˜μ§€ μ•ŠλŠ” λͺ¨λ¦¬λ₯Ό ν•΄μ œν•˜λŠ” κΈ°λŠ₯. μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” 가비지 μ½œλ ‰ν„°λ₯Ό λ‚΄μž₯ν•˜κ³  μžˆλŠ” λ§€λ‹ˆμ§€λ“œ μ–Έμ–΄.

4.7 μ‹λ³„μž 넀이밍 κ·œμΉ™

  • μ‹λ³„μžλŠ” 특수문자λ₯Ό μ œμ™Έν•œ 문자, 숫자, μ–Έλ”μŠ€μ½”μ–΄(_), λ‹¬λŸ¬ 기호λ₯Ό 포함할 수 있음.
  • 단 숫자둜 μ‹œμž‘ν•˜λŠ” 것은 ν—ˆμš©ν•˜μ§€ μ•ŠμŒ.
  • μ˜ˆμ•½μ–΄λŠ” μ‹λ³„μžλ‘œ μ‚¬μš©ν•  수 μ—†μŒ.
  • μ‰Όν‘œλ‘œ ꡬ뢄해 μ—¬λŸ¬ 개 ν•œλ²ˆμ— μ„ μ–Έ κ°€λŠ₯, μœ λ‹ˆμ½”λ“œ 문자 ν—ˆμš© (λ‘˜λ‹€ ꢌμž₯ν•˜μ§€ μ•ŠμŒ).
  • λŒ€μ†Œλ¬Έμžλ₯Ό ꡬ뢄.
  • 쑴재 λͺ©μ μ„ μ‰½κ²Œ 이해할 수 있돌둝 의미λ₯Ό λͺ…ν™•νžˆ ν‘œν˜„. -> μ½”λ“œμ˜ 가독성을 λ†’μž„.
[넀이밍 μ»¨λ²€μ…˜]

// 카멜 μΌ€μ΄μŠ€ | camelCase (κ°€μž₯많이 μ‚¬μš©)
var firstName;

// μŠ€λ„€μ΄ν¬ μΌ€μ΄μŠ€ | snake_case
var first_name;

// 파슀칼 μΌ€μ΄μŠ€ | PascalCase (μƒμ„±μžν•¨μˆ˜, 클래슀)
var FirstName;

// 헝가이언 μΌ€μ΄μŠ€(typeHungarianCase)
var strFirstName;
var $elem = document.getElementBId('myId'); // DOMλ…Έλ“œ (jQuery)
var observable$$ = fromEvent(document, 'click'); // RxJS μ˜΅μ Έλ²„λΈ”

πŸ“Œ ECMAAScript사양에 μ •μ˜λ˜μ–΄ μžˆλŠ” 객체와 ν•¨μˆ˜λ“€λ„ 카멜 μΌ€μ΄μŠ€μ™€ 파슀칼 μΌ€μ΄μŠ€λ₯Ό μ‚¬μš©ν•¨μœΌλ‘œ 카멜 μΌ€μ΄μŠ€μ™€ 파슀칼 μΌ€μ΄μŠ€λ₯Ό λ”°λ₯΄λŠ” 것이 μœ λ¦¬ν•¨.




πŸ‘©β€πŸ’» STUDY 관리

  1. Notion | λͺ¨λ˜ μžλ°”μŠ€ν¬λ¦½νŠΈ Deep Dive 곡뢀 κ³„νšκ³Ό 진행λ₯ 
  2. GitHub | μ½”λ“œμ†ŒμŠ€ 관리

πŸ“μΆœμ²˜ 및 μ°Έκ³ 

원문 좜처: [μ±…] λͺ¨λ˜μžλ°”μŠ€ν¬λ¦½νŠΈ DeepDive
μ±… 지은이 λΈ”λ‘œκ·Έ: https://poiemaweb.com/
μ±… 지은이 유튜브: https://www.youtube.com/c/poiemaweb/playlists
FEμž¬λ‚¨ μ‹€λ¬΄μžμ˜ μ±… μš”μ  μœ νŠœλΆ€ : https://www.youtube.com/playlist?list=PLjQV3hketAJnP_ceUiPCc8GnNQ0REpCqr

profile
🎈 ν•¨κ»˜ μ„±μž₯ν•˜λŠ” 즐거운 개발자의 μ„Έκ³„λ‘œ! 🌈✨

0개의 λŒ“κΈ€