πŸ‘¨πŸ»β€πŸ’»λͺ¨λ˜ λ¦¬μ•‘νŠΈ Deep Dive

pjw__98Β·2023λ…„ 12μ›” 19일
1
post-thumbnail

πŸ“† λ‚ μ§œ

2023/12/19(ν™”)

πŸ“š 챕터

ν΄λ‘œμ €λ₯Ό λ‹€λ£° λ•Œ μ£Όμ˜ν•  사항


πŸ‘¨πŸ»β€πŸ’»ν•™μŠ΅ λ‚΄μš©

πŸŽ―ν΄λ‘œμ € μ‚¬μš© ν•  λ•Œ μ£Όμ˜ν•  점

ν΄λ‘œμ €λŠ” 닀루기 쉽지 μ•Šμ€ κ°œλ…μ΄λΌκ³  ν•œλ‹€.
λ”°λΌμ„œ ν΄λ‘œμ €λ₯Ό μ‚¬μš©ν•  λ•ŒλŠ” 주의λ₯Ό ν•΄μ•Όν•œλ‹€κ³  ν•œλ‹€.

<script>
for (var i = 0; i < 5; i++){
 setTimeout(function () {
 console.log(i)
 },i * 1000)
}
</script>

μœ„ μ½”λ“œμ˜ μ˜λ„λŠ” 0λΆ€ν„° μ‹œμž‘ν•΄ 1초 κ°„κ²©μœΌλ‘œ console.log둜 0,1,2,3,4λ₯Ό μ°¨λ‘€λŒ€λ‘œ 좜λ ₯ν•˜λŠ” 것이닀.
κ·ΈλŸ¬λ‚˜ μ‹€μ œλ‘œ μœ„ μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜λ©΄ 0,1,2,3,4초 뒀에 5만 좜λ ₯λœλ‹€.
setTimeout의 읡λͺ… ν•¨μˆ˜κ°€ ν΄λ‘œμ €λ‘œ iλ₯Ό 잘 λ”°λΌκ°ˆ 것 같은데,λͺ¨λ‘ 5κ°€ λ˜λŠ” μ΄μœ λŠ” λ¬΄μ—‡μΌκΉŒ?
κ·Έ μ΄μœ λŠ” iκ°€ μ „μ—­λ³€μˆ˜λ‘œ μž‘λ™ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.
μžλ°”μŠ€ν¬λ¦½νŠΈλŠ” 기본적으둜 ν•¨μˆ˜ 레벨 μŠ€μ½”ν”„λ₯Ό λ”°λ₯΄κ³  있기 λ•Œλ¬Έμ— varλŠ” for문의 μ‘΄μž¬μ™€ 상관없이 ν•΄λ‹Ή ꡬ문이 μ„ μ–Έλœ ν•¨μˆ˜ 레벨 μŠ€μ½”ν”„λ₯Ό 바라보고 μžˆμœΌλ―€λ‘œ ν•¨μˆ˜ λ‚΄λΆ€ 싀행이 μ•„λ‹ˆλΌλ©΄ μ „μ—­ μŠ€μ½”ν”„μ— var iκ°€ 등둝돼 μžˆμ„ 것이닀.
for문을 λ‹€ μˆœνšŒν•œ 이후, νƒœμŠ€ν¬ 큐에 μžˆλŠ” setTimeout을 μ‹€ν–‰ν•˜λ €κ³  ν–ˆμ„ λ•Œ, 이미 μ „μ—­ λ ˆλ²¨μ— μžˆλŠ” iλŠ” 5둜 μ—…λ°μ΄νŠΈκ°€ μ™„λ£ŒλΌ μžˆλ‹€.

이λ₯Ό μ˜¬λ°”λ₯΄κ²Œ μˆ˜μ •ν•˜λŠ” 방법은 ν•¨μˆ˜λ ˆλ²¨ μŠ€μ½”ν”„κ°€ μ•„λ‹Œ 블둝 레벨 μŠ€μ½”ν”„λ₯Ό κ°–λŠ” let으둜 μˆ˜μ •ν•˜λŠ” 것이닀.
let은 기본적으둜 블둝 레벨 μŠ€μ½”ν”„λ₯Ό κ°€μ§€κ²Œ λ˜λ―€λ‘œ let iκ°€ for문을 μˆœνšŒν•˜λ©΄μ„œ 각각의 μŠ€μ½”ν”„λ₯Ό κ°–κ²Œ λœλ‹€.

πŸ“Œ var ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν–ˆμ„ λ•Œ

πŸ“Œ let ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν–ˆμ„ λ•Œ

ν΄λ‘œμ €λŠ” μ‚¬μš©ν•˜λŠ” λ°λŠ” λΉ„μš©μ΄ λ“ λ‹€.
ν΄λ‘œμ €λŠ” μƒμ„±λ λ•Œλ§ˆλ‹€ κ·Έ 선언적 ν™˜κ²½μ„ κΈ°μ–΅ν•΄μ•Ό ν•˜λ―€λ‘œ μΆ”κ°€ λΉ„μš©μ΄ λ°œμƒν•œλ‹€.
ν΄λ‘œμ €κ°€ μ„ μ–Έλœ μˆœκ°„ λ‚΄λΆ€ ν•¨μˆ˜λŠ” μ™ΈλΆ€ ν•¨μˆ˜μ˜ 선언적인 ν™˜κ²½μ„ κΈ°μ–΅ν•˜κ³  μžˆμ–΄μ•Ό ν•˜λ―€λ‘œ 이λ₯Ό μ–΄λ””μ—μ„œ μ‚¬μš©ν•˜λŠ”μ§€ 여뢀에 관계없이 μ €μž₯ν•΄ λ‘”λ‹€.

ν΄λ‘œμ €μ˜ κ°œλ…,즉 μ™ΈλΆ€ ν•¨μˆ˜λ₯Ό κΈ°μ–΅ν•˜κ³  이λ₯Ό λ‚΄λΆ€ ν•¨μˆ˜μ—μ„œ κ°€μ Έλ‹€ μ“°λŠ” λ©”μ»€λ‹ˆμ¦˜μ€ μ„±λŠ₯에 영ν–₯을 λ―ΈμΉœλ‹€.
ν΄λ‘œμ €μ— κΌ­ ν•„μš”ν•œ μž‘μ—…λ§Œ 남겨두지 μ•ŠλŠ”λ‹€λ©΄ λ©”λͺ¨λ¦¬λ₯Ό λΆˆν•„μš”ν•˜κ²Œ μž‘μ•„λ¨ΉλŠ” κ²°κ³Όκ°€ 생긴닀.ν΄λ‘œμ € μ‚¬μš©μ„ μ μ ˆν•œ μŠ€μ½”ν”„λ‘œ 가둬두지 μ•ŠλŠ”λ‹€λ©΄ μ„±λŠ₯에 μ•…μ˜ν–₯을 λ―ΈμΉœλ‹€. ν΄λ‘œμ €λ₯Ό μ‚¬μš©ν•  λ•Œ κΌ­ μ£Όμ˜κ°€ ν•„μš”ν•˜λ‹€.

➑️ λ‹€μŒ κΈ€μ—μ„œλŠ” 이벀트 루프와 비동기 ν†΅μ‹ μ˜ 이해에 λŒ€ν•΄ μ‚΄νŽ΄λ³΄μž.

profile
β˜„οΈ

0개의 λŒ“κΈ€