λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

λ…μ„œ λͺ©λ‘/λͺ¨λ”₯λ‹€ Modern JS Deep Dive

[λͺ¨λ”₯λ‹€] 12μž₯ ν•¨μˆ˜

728x90

 

🫧 12.1 ν•¨μˆ˜λž€?

 

JSμ—μ„œ κ°€μž₯ μ€‘μš”ν•œ 핡심 κ°œλ…. 

λ‹€λ₯Έ 핡심 κ°œλ… (μŠ€μ½”ν”„, μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ λ“±..) κ³Ό κΉŠμ€ 관련이 있음. 

JS λ₯Ό μ΄ν•΄ν•˜κΈ° μœ„ν•œ 핡심 μ€‘μ˜ 핡심

 

ν•¨μˆ˜λŠ” 일련의 과정을 문으둜 κ΅¬ν˜„, 

μ½”λ“œ λΈ”λ‘μœΌλ‘œ κ°μ‹Έμ„œ ν•˜λ‚˜μ˜ μ‹€ν–‰ λ‹¨μœ„λ‘œ μ •μ˜ν•œ 것. 

μž…λ ₯을 λ°›μ•„μ„œ 좜λ ₯을 내보냄. 

λ§€κ°œλ³€μˆ˜ : ν•¨μˆ˜ λ‚΄λΆ€λ‘œ μž…λ ₯을 μ „λ‹¬λ°›λŠ” λ³€μˆ˜

인수 : μž…λ ₯

λ°˜ν™˜κ°’: 좜λ ₯

 

ν•¨μˆ˜λŠ” ν•¨μˆ˜ μ •μ˜λ₯Ό 톡해 생성됨.

ν•¨μˆ˜ 호좜 : ν•¨μˆ˜λŠ” μ •μ˜λ§ŒμœΌλ‘œ μ‹€ν–‰λ˜λŠ” 것이 μ•„λ‹ˆλΌ, 싀행을 λͺ…μ‹œμ μœΌλ‘œ μ§€μ‹œν•΄μ•Όν•¨

 

 


 

 

 

🫧 12.2 ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” 이유

 

λ™μΌν•œ 반볡 μž‘μ—…μ„ μˆ˜ν–‰ν•  μ‹œ, μ—¬λŸ¬λ²ˆ 호좜 κ°€λŠ₯ -> μ½”λ“œμ˜ μž¬μ‚¬μš© κ°€λŠ₯

μ—¬λŸ¬ 번 μž‘μ„± μ‹œ μˆ˜μ •ν•˜λ €λ©΄ κ±Έλ¦¬λŠ” μ‹œκ°„ & 였λ₯˜ κ°€λŠ₯μ„± 증가 -> μœ μ§€λ³΄μˆ˜μ˜ νŽΈμ˜μ„±κ³Ό μ½”λ“œμ˜ 신뒰성을 높이기 μœ„ν•΄

ν•¨μˆ˜μ— λΆ™μ΄λŠ” 이름인 μ‹λ³„μžλ₯Ό 잘 μ •ν•΄μ•Ό μ½”λ“œμ˜ 가독성을 ν–₯μƒμ‹œν‚¬ 수 μžˆλ‹€.

 

 


 

 

🫧 12.3 ν•¨μˆ˜ λ¦¬ν„°λŸ΄

 

JS 의 ν•¨μˆ˜λŠ” 객체 νƒ€μž…μ˜ κ°’. -> ν•¨μˆ˜ λ¦¬ν„°λŸ΄λ‘œ 생성할 수 있음. 

 

ν•¨μˆ˜ λ¦¬ν„°λŸ΄μ˜ ꡬ쑰

- function ν‚€μ›Œλ“œ

- ν•¨μˆ˜ 이름 (μ‹λ³„μž 넀이밍 κ·œμΉ™μ„ μ€€μˆ˜ν•΄μ•Όν•¨. 이름은 μƒλž΅μ΄ κ°€λŠ₯)

- 맀개 λ³€μˆ˜ λͺ©λ‘ (0개 이상, μˆœμ„œκ°€ μ€‘μš”, ν•¨μˆ˜ λͺΈμ²΄ λ‚΄μ—μ„œ λ³€μˆ˜μ™€ λ™μΌν•œ μ·¨κΈ‰)

- ν•¨μˆ˜ λͺΈμ²΄ (ν•¨μˆ˜ 호좜 μ‹œ μΌκ΄„μ μœΌλ‘œ 싀행될 문듀을 ν•˜λ‚˜μ˜ μ‹€ν–‰ λ‹¨μœ„λ‘œ μ •μ˜ν•œ μ½”λ“œ 블둝) 

 

ν•¨μˆ˜λŠ” κ°μ²΄μž„

- 일반 κ°μ²΄μ™€μ˜ 차이점 : 호좜 κ°€λŠ₯ μ—¬λΆ€

 

 


 

 

🫧 12.4 ν•¨μˆ˜ μ •μ˜

 

ν•¨μˆ˜ 호좜 이전에 λ§€κ°œλ³€μˆ˜, μ‹€ν–‰ν•  λ¬Έ, λ°˜ν™˜ν•  값을 μ§€μ •ν•˜λŠ” 것.

 

ν•¨μˆ˜λ₯Ό μ •μ˜ν•˜λŠ” 법

- ν•¨μˆ˜ μ„ μ–Έλ¬Έ

function add(x, y){
    return x + y;
}

- ν•¨μˆ˜ ν‘œν˜„μ‹

const add = function (x, y){
    return x + y;
}

- Function μƒμ„±μž ν•¨μˆ˜

const add = new Function('x', 'y', 'return x + y');

- ν™”μ‚΄ν‘œ ν•¨μˆ˜

const add = (x, y) => x + y;

 

 

πŸ“Œ λ³€μˆ˜ μ„ μ–Έκ³Ό ν•¨μˆ˜ μ •μ˜

- ν•¨μˆ˜ 선언문이 ν‰κ°€λ˜λ©΄ μ‹λ³„μžκ°€ μ•”λ¬΅μ μœΌλ‘œ 생성 & ν•¨μˆ˜ 객체가 할당됨

 

 

12.4.1 ν•¨μˆ˜ μ„ μ–Έλ¬Έ

function add(x, y){
    return x + y;
}

 

ν•¨μˆ˜ λ¦¬ν„°λŸ΄κ³Ό ν˜•νƒœκ°€ λ™μΌν•˜μ§€λ§Œ, 

ν•¨μˆ˜ λ¦¬ν„°λŸ΄μ€ 이름을 μƒλž΅ν•  수 μžˆμœΌλ‚˜,

ν•¨μˆ˜ 선언문은 ν•¨μˆ˜ 이름을 μƒλž΅ν•  수 μ—†λ‹€.

ν•¨μˆ˜ 선언문은 ν‘œν˜„μ‹μ΄ μ•„λ‹Œ λ¬Έ

(크둬 μ½˜μ†”μ—μ„œ μ„ μ–Έν•˜λ©΄ undefined κ°€ 좜λ ₯됨)

 

ν‘œν˜„μ‹μ΄ μ•„λ‹Œ 문은 λ³€μˆ˜μ— ν• λ‹Ήν•  수 μ—†μŒ -> ν•¨μˆ˜ 선언문도 λ³€μˆ˜μ— ν• λ‹Ήν•  수 μ—†μŒ.

ν•˜μ§€λ§Œ ν• λ‹Ή λ˜λŠ” 것 처럼 λ³΄μž„. 

const add = function add(x, y) {
    return x + y;
}

-> JS 엔진이 μ½”λ“œμ— 따라 ν•¨μˆ˜ λ¦¬ν„°λŸ΄κ³Ό ν•¨μˆ˜ 선언문을 각각으둜 ν•΄μ„ν•˜λŠ” κ²½μš°κ°€ 있기 λ•Œλ¬Έ.  

ν•¨μˆ˜ 선언문이든 ν•¨μˆ˜ λ¦¬ν„°λŸ΄μ΄λ“  ν•¨μˆ˜κ°€ μƒμ„±λ˜λŠ” 것은 λ™μΌν•˜μ§€λ§Œ, 

λ‚΄λΆ€ λ™μž‘μ— 차이가 μžˆλ‹€.

 

ν•¨μˆ˜ μ„ μ–Έλ¬ΈμœΌλ‘œ μƒμ„±λœ ν•¨μˆ˜ -> 호좜 κ°€λŠ₯

ν•¨μˆ˜ λ¦¬ν„°λŸ΄ ν‘œν˜„μ‹μœΌλ‘œ μƒμ„±λœ ν•¨μˆ˜ -> 호좜 λΆˆκ°€λŠ₯

 

ν•¨μˆ˜ 이름 -> ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œλ§Œ μ‚¬μš©

μ‹λ³„μž -> μ™ΈλΆ€μ—μ„œ ν˜ΈμΆœμ‹œ μ‚¬μš©. μ—†μœΌλ©΄ JS 엔진이 ν•¨μˆ˜ 이름과 λ™μΌν•œ μ‹λ³„μžλ₯Ό μ•”λ¬΅μ μœΌλ‘œ 생성 & ν•¨μˆ˜ 객체λ₯Ό 할당함.  

 

즉, ν•¨μˆ˜λŠ” ν•¨μˆ˜ 이름이 μ•„λ‹Œ ν•¨μˆ˜ 객체λ₯Ό κ°€λ¦¬ν‚€λŠ” μ‹λ³„μžλ‘œ ν˜ΈμΆœν•¨

 

 

 

12.4.2 ν•¨μˆ˜ ν‘œν˜„μ‹

const add = function (x, y){
    return x + y;
}

 

일급 객체: κ°’μ˜ μ„±μ§ˆμ„ κ°–λŠ” 객체 

=> ν•¨μˆ˜λŠ” 일급 κ°μ²΄μž„

=> ν•¨μˆ˜λ₯Ό κ°’μ²˜λŸΌ 자유둭게 μ‚¬μš©ν•  수 μžˆλ‹€λŠ” 의미

 

ν•¨μˆ˜ μ„ μ–Έλ¬Έ : ν‘œν˜„μ‹μ΄ ❌ λ¬Έ

ν•¨μˆ˜ ν‘œν˜„μ‹ : ν‘œν˜„μ‹μΈ λ¬Έ

 

 

12.4.3 ν•¨μˆ˜ 생성 μ‹œμ κ³Ό ν•¨μˆ˜ ν˜Έμ΄μŠ€νŒ…

 

ν•¨μˆ˜ μ„ μ–Έλ¬ΈμœΌλ‘œ μ •μ˜ν•œ ν•¨μˆ˜ -> μ„ μ–Έλ¬Έ 이전에 호좜 κ°€λŠ₯

ν•¨μˆ˜ ν‘œν˜„μ‹μœΌλ‘œ μ •μ˜ν•œ ν•¨μˆ˜ -> ν‘œν˜„μ‹ 이전에 호좜 ❌

=> 생성 μ‹œμ μ΄ λ‹€λ₯΄κΈ° λ•Œλ¬Έ

 

ν•¨μˆ˜ μ„ μ–Έλ¬ΈμœΌλ‘œ μ •μ˜ν•œ ν•¨μˆ˜ ν•¨μˆ˜ ν‘œν˜„μ‹μœΌλ‘œ μ •μ˜ν•œ ν•¨μˆ˜
- λŸ°νƒ€μž„ 이전에 객체 생성
- JS 엔진이 ν•¨μˆ˜ 이름과 λ™μΌν•œ μ΄λ¦„μ˜ μ‹λ³„μž 암묡적 생성

-> λŸ°νƒ€μž„μ— 이미 ν•¨μˆ˜ 객체 생성 μ™„λ£Œ 
 & μ‹λ³„μžμ— ν• λ‹ΉκΉŒμ§€ μ™„λ£Œλœ μƒνƒœ

ν•¨μˆ˜ ν˜Έμ΄μŠ€νŒ…
ν•¨μˆ˜μ˜ 선언문이 μ½”λ“œμ˜ μ„ λ‘λ‘œ λŒμ–΄ μ˜¬λ €μ§„ κ²ƒμ²˜λŸΌ λ™μž‘ν•˜λŠ” JS 고유의 νŠΉμ§•
- λ³€μˆ˜μ— ν• λ‹Ήλ˜λŠ” 값이 ν•¨μˆ˜ λ¦¬ν„°λŸ΄μΈ λ¬Έ
- 할당문이 μ‹€ν–‰λ˜λŠ” μ‹œμ , 즉 λŸ°νƒ€μž„μ— 평가됨

- ν•¨μˆ˜ ν˜Έμ΄μŠ€νŒ…μ΄ μ•„λ‹ˆλΌ, λ³€μˆ˜ ν˜Έμ΄μŠ€νŒ…μ΄ λ°œμƒν•¨. 
-> ν•¨μˆ˜ ν‘œν˜„μ‹ 이전에 ν•¨μˆ˜λ₯Ό μ°Έμ‘°ν•˜λ©΄ undefined 둜 평가됨.

=> ν•¨μˆ˜ μ„ μ–Έλ¬Έμ˜ ν•¨μˆ˜ ν˜Έμ΄μŠ€νŒ… λ•Œλ¬Έμ— ν•¨μˆ˜ ν‘œν˜„μ‹μ„ μ‚¬μš©ν•  것을 ꢌμž₯함

 

 

 

12.4.4 Function μƒμ„±μž ν•¨μˆ˜

const add = new Function('x', 'y', 'return x + y');

new μ—°μ‚°μžλž‘ 호좜.

Function μƒμ„±μž ν•¨μˆ˜λ‘œ ν•¨μˆ˜λ₯Ό μƒμ„±ν•˜λŠ” 방식

- μΌλ°˜μ μ΄μ§€ μ•ŠμŒ

- λ°”λžŒμ§ν•˜μ§€ μ•ŠμŒ

=> ν΄λ‘œμ € 생성 ❌ & ν•¨μˆ˜ μ„ μ–Έλ¬Έμ΄λ‚˜ ν‘œν˜„μ‹μœΌλ‘œ μƒμ„±ν•œ ν•¨μˆ˜μ™€ λ‹€λ₯΄κ²Œ λ™μž‘ν•¨.  

 

 

 

12.4.5 ν™”μ‚΄ν‘œ ν•¨μˆ˜

const add = (x, y) => x + y;

항상 읡λͺ… ν•¨μˆ˜λ‘œ μ •μ˜ν•¨. 

ν•¨μˆ˜ μ„ μ–Έλ¬Έ ν˜Ήμ€ ν‘œν˜„λ¬Έμ„ μ™„μ „νžˆ λŒ€μ²΄ν•˜μ§€λŠ” λͺ»ν•¨. 

ν‘œν˜„ 뿐 μ•„λ‹ˆλΌ λ‚΄λΆ€ λ™μž‘λ„ κ°„λž΅ν™” λ˜μ–΄ 있음. 

- μƒμ„±μž ν•¨μˆ˜λ‘œ μ‚¬μš©ν•  수 μ—†μŒ.

- κΈ°μ‘΄ ν•¨μˆ˜μ™€ this 바인딩 방식이 닀름

- prototype ν”„λ‘œνΌν‹°κ°€ μ—†μŒ

- arguments 객체λ₯Ό μƒμ„±ν•˜μ§€ μ•ŠμŒ. 

 

(λ‚˜μ€‘μ— λ’€μ—μ„œ 또 배움)

 

 


 

 

🫧 12.5 ν•¨μˆ˜ 호좜

 

12.5.1 λ§€κ°œλ³€μˆ˜μ™€ 인수

ν•¨μˆ˜ 싀행에 ν•„μš”ν•œ 값을 μ™ΈλΆ€μ—μ„œ 전달 ν•  경우 -> λ§€κ°œλ³€μˆ˜(인자)λ₯Ό 톡해 인수λ₯Ό 전달. 

μΈμˆ˜λŠ” κ°’μœΌλ‘œ 평가될 수 μžˆλŠ” ν‘œν˜„μ‹μ΄μ—¬μ•Όν•¨. 

----------------------------------------------

function add (a, b) {

return a + b;

}

add ( 1, 2 );

---------------------------------------------

 

ν•¨μˆ˜λŠ” λ§€κ°œλ³€μˆ˜μ˜ κ°œμˆ˜μ™€ 인수의 κ°œμˆ˜κ°€ μΌμΉ˜ν•˜λŠ”μ§€ μ²΄ν¬ν•˜μ§€ μ•ŠμŒ. 

 

맀개 λ³€μˆ˜λ³΄λ‹€ μΈμˆ˜κ°€

덜 λ“€μ–΄μ˜€λ©΄ undefined

더 λ“€μ–΄μ˜€λ©΄ λ¬΄μ‹œν•¨. 

 

 

12.5.2 인수 확인

JSλŠ” νƒ€μž…μ„ 확인해주지 μ•ŠμœΌλ―€λ‘œ νƒ€μž…κ³Ό 상관없이 인수λ₯Ό 보낼 수 μžˆλ‹€.

-> μ μ ˆν•œ μΈμˆ˜κ°€ μ „λ‹¬λ˜μ—ˆλŠ”μ§€ 확인할 ν•„μš”κ°€ μžˆλ‹€.

 

TS λ₯Ό λ„μž…ν•˜λŠ” 것도 ν•˜λ‚˜μ˜ λ°©λ²•μž„. 

 

 

12.5.3 λ§€κ°œλ³€μˆ˜μ˜ μ΅œλŒ€ 개수

λ§€κ°œλ³€μˆ˜λŠ” κ°œμˆ˜λ³΄λ‹€ μˆœμ„œμ— μ˜λ―Έκ°€ 있음. 

μ΅œλŒ€ 3개 이상을 λ„˜μ§€ μ•ŠλŠ” 것을 ꢌμž₯함. 

(μœ μ§€ λ³΄μˆ˜μ™€ 였λ₯˜ λ°œμƒλ₯  μ €ν•˜λ₯Ό μœ„ν•΄)

 

 

12.5.4 λ°˜ν™˜λ¬Έ

return

μ—­ν•  1. ν•¨μˆ˜μ˜ 싀행을 μ€‘λ‹¨ν•˜κ³  ν•¨μˆ˜ λͺΈμ²΄λ₯Ό λΉ μ Έλ‚˜κ°. (return λ¬Έ 이후에 쓰여진 μ½”λ“œλŠ” μ‹€ν–‰ μ•ˆλ¨)

 

μ—­ν•  2. return λ¬Έ λ’€μ˜ ν‘œν˜„μ‹μ„ 평가해 λ°˜ν™˜ν•¨. λͺ…μ‹œμ μœΌλ‘œ μ§€μ •ν•˜μ§€ μ•ŠμœΌλ©΄ undefined λ°˜ν™˜

 

λ°˜ν™˜λ¬Έ μƒλž΅ κ°€λŠ₯. 

μƒλž΅ν•  경우 undefined λ°˜ν™˜.

 

return ν‚€μ›Œλ“œμ™€ λ°˜ν™˜κ°’ 사이에 μ€„λ°”κΏˆμ΄ 있으면

-> return 뒀에 ; μ„Έλ―Έμ½œλ‘  좔가됨. λ°˜ν™˜κ°’μ€ λ¬΄μ‹œλ¨.

 

(Node.js λŠ” 독립적인 파일 μŠ€μ½”ν”„λ₯Ό 가지기 λ•Œλ¬Έμ—, 파일의 κ°€μž₯ λ°”κΉ₯에 λ°˜ν™˜λ¬Έ μ‚¬μš©ν•΄λ„ μ—λŸ¬ λ°œμƒ ❌)

 

 


 

 

🫧 12.6 참쑰에 μ˜ν•œ 전달과 μ™ΈλΆ€ μƒνƒœμ˜ λ³€κ²½

 

ν•¨μˆ˜λ‘œ μ›μ‹œ 값을 λ°›μœΌλ©΄ -> 훼손 μ•ˆλ¨. 

객체λ₯Ό λ°›μœΌλ©΄ -> 훼손됨. 

참쑰값을 λ„˜κ²¨μ£ΌκΈ° λ•Œλ¬Έμ— 원본 객체가 변경됨. 

 

=> 좔적도 μ–΄λ €μ›Œ λ³΅μž‘μ„± 증가, 가독성을 ν•΄μΉ˜κ²Œ 됨. 

 

< ν•΄κ²° 방법 >

1. λ˜‘κ°™μ€ 객체λ₯Ό μƒˆλ‘­κ²Œ 생성 (λ…λ¦½μ μœΌλ‘œ 볡제) ν›„ μ‚¬μš©ν•˜κΈ°. === κΉŠμ€ 볡사

=> 객체λ₯Ό λΆˆλ³€ 객체(λ³€κ²½ λΆˆκ°€λŠ₯ν•œ κ°’)으둜 λ§Œλ“€κΈ°

2. 순수 ν•¨μˆ˜ μ‚¬μš© (μ™ΈλΆ€μƒνƒœ λ³€κ²½ ❌, μ™ΈλΆ€ μƒνƒœμ— 의쑴 ❌)

 

 


 

 

🫧 12.7 λ‹€μ–‘ν•œ ν•¨μˆ˜μ˜ ν˜•νƒœ

 

12.7.1 μ¦‰μ‹œ μ‹€ν–‰ ν•¨μˆ˜

(ν•¨μˆ˜ μ •μ˜)();

-> 단 ν•œλ²ˆλ§Œ 호좜되며, 재호좜 μ•ˆλ¨. 

μ‹€ν–‰ ν•¨μˆ˜(ν•¨μˆ˜ μ •μ˜λΆ€λΆ„)은 κΌ­ () 둜 감싸야 ν•œλ‹€.

 

μ¦‰μ‹œ μ‹€ν–‰ ν•¨μˆ˜λ„ 일반 ν•¨μˆ˜μ²˜λŸΌ 값을 λ°˜ν™˜ν•  수 있고 인수λ₯Ό 전달할 μˆ˜λ„ 있음.

const add = (function (a, b){
    return a + b;
})(5, 3);

 

 

12.7.2 μž¬κ·€ ν•¨μˆ˜

자기 μžμ‹ μ„ 호좜. 

λ°˜λ³΅λ˜λŠ” 처리λ₯Ό μœ„ν•΄ μ‚¬μš©ν•¨.

 

νŽ™ν† λ¦¬μ–Ό ! 계산할 λ•Œ μ’‹μŒ

function factorial(n) {
    if (n <= 1) return 1;
    return n * factorial(n - 1);
}

 

ν•¨μˆ˜ 내뢀에선 ν•¨μˆ˜ 이름을 μ‚¬μš©ν•΄ μž¬κ·€ ν•  수 있음.

근데 ν•¨μˆ˜ 외뢀에선 μ‹λ³„μžλ‘œ ν˜ΈμΆœν•΄μ•Όν•¨.

 

λŒ€λΆ€λΆ„μ˜ μž¬κ·€ν•¨μˆ˜λŠ” for λ¬Έ, while 문으둜 ν‘œν˜„ κ°€λŠ₯.

λ°˜λ³΅λ¬Έλ³΄λ‹€ μ§κ΄€μ μœΌλ‘œ ν‘œν˜„ν•  수 μžˆμ„ λ•Œ μ‚¬μš©ν•˜λŠ” κ±Έ ꢌμž₯함. 

 

 

12.7.3 쀑첩 ν•¨μˆ˜

쀑첩 ν•¨μˆ˜ : ν•¨μˆ˜ 내뢀에 μ •μ˜λœ ν•¨μˆ˜. 일반적으둜 μ™ΈλΆ€ν•¨μˆ˜λ₯Ό λ•λŠ” 헬퍼 ν•¨μˆ˜μ˜ 역할을 함. 

μ™ΈλΆ€ ν•¨μˆ˜ : 쀑첩 ν•¨μˆ˜λ₯Ό ν¬ν•¨ν•œ ν•¨μˆ˜

 

 

 

12.7.4 콜백 ν•¨μˆ˜

콜백 ν•¨μˆ˜ : ν•¨μˆ˜μ˜ λ§€κ°œλ³€μˆ˜λ₯Ό 톡해 λ‹€λ₯Έ ν•¨μˆ˜μ˜ λ‚΄λΆ€λ‘œ μ „λ‹¬λ˜λŠ” ν•¨μˆ˜ 

κ³ μ°¨ ν•¨μˆ˜ : 맀개 λ³€μˆ˜λ‘œ ν•¨μˆ˜μ˜ μ™ΈλΆ€μ—μ„œ 콜백 ν•¨μˆ˜λ₯Ό 전달받은 ν•¨μˆ˜

 

κ³ μ°¨ ν•¨μˆ˜λŠ” μ½œλ°±ν•¨μˆ˜μ˜ 호좜 μ‹œμ μ„ κ²°μ •ν•΄μ„œ ν˜ΈμΆœν•¨. 

=> 콜백 ν•¨μˆ˜λŠ” κ³ μ°¨ ν•¨μˆ˜μ— μ˜ν•΄ 호좜되며, ν•„μš”μ— 따라 콜백 ν•¨μˆ˜μ— 인자λ₯Ό 전달할 수 있음. 

 

=> κ³ μ°¨ ν•¨μˆ˜μ— 콜백 ν•¨μˆ˜λ₯Ό 전달할 λ•Œ, μ½œλ°±ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•˜μ§€ μ•Šκ³  ν•¨μˆ˜ 자체λ₯Ό 전달해야함. 

() λΆ™μ—¬μ„œ μ „λ‹¬ν•˜λ©΄ μ•ˆλ¨

 

 

12.7.5 순수 ν•¨μˆ˜μ™€ λΉ„μˆœμˆ˜ ν•¨μˆ˜ 

순수 ν•¨μˆ˜ λΉ„μˆœμˆ˜ ν•¨μˆ˜
- μ™ΈλΆ€ μƒνƒœμ— 의쑴 ❌ && μ™ΈλΆ€ μƒνƒœ λ³€κ²½ ❌
-> λΆ€μˆ˜ νš¨κ³Όκ°€ μ—†λŠ” ν•¨μˆ˜

- λ™μΌν•œ 인수 전달 -> λ™μΌν•œ κ°’ λ°˜ν™˜ 

- μ΅œμ†Œ ν•˜λ‚˜ μ΄μƒμ˜ 인수λ₯Ό 전달 λ°›μŒ. 
- 인수의 λΆˆλ³€μ„± μœ μ§€
- μ™ΈλΆ€ μƒνƒœ 의쑴 β­• || μ™ΈλΆ€ μƒνƒœ λ³€κ²½ β­•
-> λΆ€μˆ˜ νš¨κ³Όκ°€ μžˆλŠ” ν•¨μˆ˜

- μ™ΈλΆ€ μƒνƒœμ— 따라 λ°˜ν™˜κ°’μ΄ 달라짐. 
- μ™ΈλΆ€ μƒνƒœ : μ „μ—­ λ³€μˆ˜, μ„œλ²„ 데이터, 파일, DOM λ“±...

 

ν•¨μˆ˜ν˜• ν”„λ‘œκ·Έλž˜λ°

- μ™ΈλΆ€ μƒνƒœλ₯Ό λ³€κ²½ν•˜λŠ” λΆ€μˆ˜ 효과λ₯Ό μ΅œμ†Œν™” => λΆˆλ³€μ„± 지ν–₯ν•˜λŠ” ν”„λ‘œκ·Έλž˜λ° νŒ¨λŸ¬λ‹€μž„. 

- 반볡문, 쑰건문 제거 -> λ³΅μž‘μ„± ν•΄κ²°

- λ³€μˆ˜ μ‚¬μš© μ–΅μ œ, 생λͺ… μ£ΌκΈ° μ΅œμ†Œν™” -> μƒνƒœ λ³€κ²½ 피함 -> 였λ₯˜ μ΅œμ†Œν™”

=> 였λ₯˜λ₯Ό ν”Όν•˜κ³  ν”„λ‘œκ·Έλž¨μ˜ μ•ˆμ •μ„±μ„ λ†’μ΄λ €λŠ” λ…Έλ ₯의 μΌν™˜μž„. 

 

728x90
λ°˜μ‘ν˜•