λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ’κ³΅λΆ€/JS

[JavaScript] IIFE(Immediately Invoked Function Expression)

by rindev 2021. 9. 15.

😎 IIFE(Immediately Invoked Function Expression)λž€?

  • μ¦‰μ‹œ μ‹€ν–‰ ν•¨μˆ˜, ν•¨μˆ˜ μ„ μ–Έκ³Ό λ™μ‹œμ— μ‹€ν–‰μ‹œν‚΄
  • (function() {})(); 의 ν˜•νƒœλ₯Ό 가짐

( function() { ... } )()

ν•¨μˆ˜μ„ μ–Έμ‹μ΄ μ•„λ‹ˆκ³  ν•¨μˆ˜λ₯Ό μ‹€ν–‰μ‹œν‚€λŠ” κ΄„ν˜Έ

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

jsμ—κ²Œ μ•Œλ €μ€Œ

 

μ‹€ν–‰ μ»¨ν…μŠ€νŠΈ λ‚΄μ—μ„œ λͺ¨λ“  λ³€μˆ˜, ν•¨μˆ˜λ“±μ΄ μ„ μ–Έλ˜λ―€λ‘œ λͺ¨λ“  λ°μ΄ν„°λŠ” IIFE의 λ‘œμ»¬μŠ€μ½”ν”„ μ•ˆμ—λ§Œ μ €μž₯λœλ‹€.

μ΄λŠ” μ „μ—­μŠ€μ½”ν”„λ₯Ό μ˜€μ—Όμ‹œν‚€μ§€ μ•Šκ³ , μ™ΈλΆ€μ—μ„œ λ©‹λŒ€λ‘œ IIFE λ‚΄λΆ€μ˜ 값에 μ ‘κ·Όν•  수 μ—†κΈ° λ•Œλ¬Έμ— 값을 μ•ˆμ „ν•˜κ²Œ 보관할 수 μžˆλ‹€.

 

var example1 = (function() {
	function a() {
		return 5;
	}
	return {
	a : a // {ν˜ΈμΆœν• λ•Œ μ“°λŠ” 이름 : μ‹€μ œ 데이터값}
	}
})(); //μ¦‰μ‹œμ‹€ν–‰ν•¨μˆ˜

function a(){ //같은 μ΄λ¦„μœΌλ‘œ λ‹€λ₯Έ ν•¨μˆ˜ μ„ μ–Έ, μœ„μ— function aκ°€ IIFEκ°€ μ•„λ‹ˆμ—ˆλ‹€λ©΄ 값이 ν˜Όλ™λ  수 μžˆλŠ” 상황
	return 'wow';
}

//μ‹€ν–‰ν™”λ©΄ 
> example1.a() 
<< 5

> a()
<< wow

 

μ‹€ν–‰μ‹œν‚€κ³ μž ν•˜λŠ” 읡λͺ… ν•¨μˆ˜λ₯Ό example1 μ΄λΌλŠ” λ³€μˆ˜μ— λ‹΄μ•„λ‘”λ‹€. (이 κ°μ²΄λŠ” { a:a } λΌλŠ” 값을 리턴함)

example1.a() 둜 example1에 λ‹΄κΈ΄ a값에 μ ‘κ·Όν•  수 있고, 밖에 μžˆλŠ” a와 ν—·κ°ˆλ¦¬μ§€ μ•Šκ³  μ‚¬μš©ν•  수 μžˆλ‹€.

 

πŸ€” IIFEλŠ” μ™œ μ“°λŠ”λ°?

  • ν•¨μˆ˜λ₯Ό μ¦‰μ‹œ μ‹€ν–‰μ‹œν‚¬ λ•Œ
  • ν•¨μˆ˜λ₯Ό λ”± ν•œλ²ˆλ§Œ μ‹€ν–‰μ‹œν‚¬ λ•Œ
  • μœ„μ˜ μ˜ˆμ‹œμ²˜λŸΌ λ³€μˆ˜μ˜ μ‚¬μš© λ²”μœ„λ₯Ό μ œν•œν•˜κΈ° μœ„ν•΄ (letκ³Ό constκ°€ μ—†λ˜ μ‹œμ ˆμ—λŠ” 특히 μ†Œμ€‘ν–ˆμ—ˆλ‹€!)

 

 

πŸ‘€μ°Έκ³  (κ°μ‚¬ν•©λ‹ˆλ‹€!)

더보기

 

λŒ“κΈ€