[TIL] JavaScript : Conditionals

AcidΒ·2021λ…„ 8μ›” 6일
0

πŸ“’ JavaScript

λͺ©λ‘ 보기
3/8
post-thumbnail

μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ 쑰건문에 λŒ€ν•œ λ‚΄μš©μž…λ‹ˆλ‹€! 😊

πŸ“’ μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ 쑰건문(Conditionals)

μžλ°”μŠ€ν¬λ¦½νŠΈμ—μ„œλŠ” μ½”λ“œμ˜ 진행을 μ œμ–΄ν•  수 μžˆλŠ” κΈ°λŠ₯이 μžˆλ‹€. ν•΄λ‹Ή μ œμ–΄ 방식은 흐름 쀑간에 쑰건을 μ œμ‹œν•˜μ—¬ 흐름을 ν†΅μ œν•˜λ˜μ§€ μ•„λ‹ˆλ©΄ ν•΄λ‹Ή 흐름을 반볡적으둜 μ§„ν–‰ν•˜λ„λ‘ ν†΅μ œν•  μˆ˜λ„ μžˆλ‹€.

μœ„μ™€ 같이 주어진 쑰건에 따라 μ½”λ“œλ₯Ό μ œμ–΄ν•˜λŠ” ꡬ문을 μ œμ–΄λ¬Έμ΄λΌκ³  ν•œλ‹€.

πŸ’‘ μ œμ–΄λ¬Έμ€ 무엇인가

μœ„μ—μ„œ μ–ΈκΈ‰ν•œ 듯이, μ œμ–΄λ¬Έ(control statements)은 νŠΉμ •ν•œ κ²°κ³Όλ₯Ό λ„μΆœν•΄λ‚΄κΈ° μœ„ν•΄μ„œ 쑰건을 μ œμ‹œν•˜μ—¬ 쑰건에 λΆ€ν•©ν•˜λŠ” μƒλ°˜λ˜λŠ” κ²°κ³Όλ₯Ό λ„μΆœν•˜κ±°λ‚˜, κ΅¬κ°„μ˜ 반볡 등을 μœ λ„ν•˜λŠ” ꡬ문이라고 ν•  수 μžˆλ‹€.

μ œμ–΄λ¬Έμ—λŠ” 이번 ν¬μŠ€νŒ…μ—μ„œ λ‹€λ£° 쑰건문과 반볡문이 ν¬ν•¨λ˜λ©° 흐름을 μ œμ–΄ν•˜λŠ” ꡬ문이기 λ•Œλ¬Έμ—, 순차적으둜 μ§„ν–‰λ˜λŠ” 흐름이 μ œμ–΄λ¬ΈμœΌλ‘œ 인해 μ–΄λ–»κ²Œ μ „ν™˜λ˜λŠ”μ§€μ— λŒ€ν•œ 이해가 ν•„μš”ν•˜λ‹€!

πŸ”– 좜처

μ œμ–΄λ¬Έμ˜ μ •μ˜ : Continuous Of Shoveling : [javascript 기초 κ°•μ’Œ] 6. μ œμ–΄λ¬Έ ( if / switch / for / while / do~ while )


κ·Έ 쀑 μ΄λ²ˆμ— λ‹€λ£° 쑰건문(conditionals)은 μ½”λ“œ 흐름 쀑간에 쑰건을 μ œμ‹œν•˜μ—¬ 흐름을 ν†΅μ œν•˜λŠ” μ œμ–΄λ¬Έμ˜ 일쒅이닀.

λŒ€κ°œ 쑰건문은 if 쑰건문을 μ‚¬μš©ν•˜λ©° 이외에도 switch 쑰건문도 μ‚¬μš©μ„ ν•˜λŠ”λ°, 이번 ν¬μŠ€νŒ…μ—μ„œλŠ” ν•΄λ‹Ή κ΅¬λ¬Έλ“€μ˜ 차이점과 ꡬ쑰에 λŒ€ν•œ 이해λ₯Ό ν•  것이닀.

βš™οΈ if 문은 무엇인가?

μ˜μ–΄ μ–΄νœ˜μ—μ„œ μ˜λ―Έν•˜λŠ” if λ₯Ό μ΄ν•΄ν–ˆμ„ λ•Œ μš°λ¦¬λŠ” κ°„λ‹¨νžˆ μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ if 문의 κΈ°λŠ₯에 λŒ€ν•œ 이해λ₯Ό ν•  수 μžˆλ‹€.

if 문은 말 κ·ΈλŒ€λ‘œ λ§Œμ•½μ— ~ λ©΄ μ΄λΌλŠ” 쑰건을 μ œμ‹œν•˜μ—¬ ν•΄λ‹Ή 쑰건에 λΆ€ν•©ν•˜λ©΄ true λ₯Ό λ°˜ν™˜ν•˜μ—¬ μž‘μ„±ν•œ ꡬ문을 μ‹€ν–‰ν•˜κ³ , λ°˜λŒ€μ˜ 경우 μ΄μ–΄μ„œ μ½”λ“œλ₯Ό 순차적으둜 μ§„ν–‰ν•˜κ±°λ‚˜ λ‹€λ₯Έ 쑰건을 λ‹€μ‹œκΈˆ μ œμ‹œν•˜λŠ” λ“±μ˜ 흐름을 ν†΅μ œν•˜λŠ” κΈ°λŠ₯을 ν•˜λŠ” ꡬ문이닀.

ν•΄λ‹Ή μ •μ˜λ₯Ό μ΄ν•΄ν•˜λ©΄ μ΄μ–΄μ§€λŠ” if...else 문법에 λŒ€ν•œ μ‚¬ν•­μ΄λ‚˜ ꡬ쑰에 λŒ€ν•œ 이해가 μ‰½κ²Œ 될 것이닀. 그럼 μ΄μ–΄μ„œ if...else 문의 문법에 λŒ€ν•΄ μ•Œμ•„λ³΄μž.

if...else 문의 문법

if...else 문은 크게 μ„Έ 가지 λ‹¨κ³„λ‘œ 이루어진닀.

μš°μ„  쑰건을 μ œμ‹œν•˜κ³  κ²°κ³Ό 값이 true 일 경우 ꡬ문을 μ‹€ν–‰ν•˜λŠ” if λ¬Έ, μ•žμ˜ 쑰건이 false 인 경우 μ‹€ν–‰ν•  λ‚΄μš©μ„ μž‘μ„±ν•˜λŠ” elseλ¬Έ, λ§ˆμ§€λ§‰μœΌλ‘œ μ•žμ˜ 쑰건이 false 일 경우 μƒˆλ‘œμš΄ 쑰건을 μ œμ‹œν•˜λŠ” else if 문이 μžˆλ‹€.

ν•΄λ‹Ή 뢀뢄을 μ˜ˆμ‹œ μ½”λ“œλ‘œ μ‚΄νŽ΄λ³΄μž

if (condition1) { // if
	statement1
} else if (condition2) { // else if
	statement2
} else { // else
	statement3
}


μœ„ μ˜ˆμ‹œ μ½”λ“œλ₯Ό 보면 쑰건은 총 2가지가 μ œμ‹œλ˜μ–΄ 있고, μ‹€ν–‰ ꡬ문은 3가지가 μž‘μ„±λ˜μ–΄ μžˆλ‹€.

λ¨Όμ € if λΆ€ν„° 보면 if λ₯Ό μž‘μ„±ν•˜κ³  μ†Œκ΄„ν˜Έ(())λ₯Ό μ—΄μ–΄ ν•΄λ‹Ή μ†Œκ΄„ν˜Έμ— 쑰건(condition1)을 μž‘μ„±ν•œ λ‹€μŒ μ€‘κ΄„ν˜Έ({})λ₯Ό μ—΄μ–΄ μ€‘κ΄„ν˜Έ μ•ˆμ— ꡬ문(statements1)을 μž‘μ„±ν•˜λŠ” ꡬ쑰λ₯Ό κ°–λŠ”λ‹€.

μ΄μ–΄μ„œ λ‚˜μ˜€λŠ” else if 도 if 와 같은 ꡬ쑰인데, 쑰건(condition2)을 μ œμ‹œν•˜κ³  μ‹€ν–‰ ꡬ문(statements2)을 μž‘μ„±ν–ˆμœΌλ©° 별닀λ₯Έ λ³€ν™”λŠ” ν™•μΈλ˜μ§€ μ•ŠλŠ”λ‹€.

κ·ΈλŸ¬λ‚˜ else 의 경우 쑰건 뢀뢄이 μƒλž΅λœ 것을 μ•Œ 수 μžˆλ‹€. κ·Έ μ΄μœ λŠ” else 문이 μ•žμ˜ λͺ¨λ“  쑰건듀에 λΆ€ν•©ν•˜μ§€ μ•ŠλŠ” λ°˜λŒ€μ˜ 경우λ₯Ό μ„œμˆ ν•˜κΈ° λ•Œλ¬Έμ— λ³„λ„λ‘œ 쑰건을 μž‘μ„±ν•˜μ§€ μ•Šμ•„λ„ λ˜λŠ” 것이닀.

μœ„ μž‘μ„± 방법은 μ„Έ 가지 μš”μ†Œλ₯Ό λͺ¨λ‘ ν™œμš©ν•˜μ˜€μ„ λ•Œ μž‘μ„±ν•  수 μžˆλŠ” 방식이고, else if 와 else λŠ” ν•„μˆ˜μ μΈ μš”μ†Œκ°€ μ•„λ‹ˆλ‹€. κ·Έλ ‡κΈ° λ•Œλ¬Έμ—, else if 와 else κ°€ μƒλž΅ κ°€λŠ₯ν•œ 경우λ₯Ό λ‹€μŒμ˜ μ˜ˆμ‹œμ—μ„œ μ•Œμ•„λ³΄μž.

// n이 5 이상인 경우 trueλ₯Ό 좜λ ₯ν•˜λŠ” 쑰건문
let n = 3
if (n >= 5) { 
	console.log(true)
}
console.log(`none`) // output : `none`


μœ„ μ˜ˆμ‹œμ˜ 경우 쑰건(n >= 5)이 λ§Œμ‘±ν•˜λŠ” 경우 true λ₯Ό λ°˜ν™˜ν•˜κ³ , μ•„λ‹Œ κ²½μš°μ—λŠ” 흐름을 μ΄μ–΄μ„œ μ§„ν–‰ν•˜λ©° if λ¬Έ λ°–μ˜ console.log() λ₯Ό μ‹€ν–‰ν•˜μ—¬ none 을 좜λ ₯ν•œλ‹€. μ΄λ ‡κ²Œ λ°˜λŒ€μ˜ 경우λ₯Ό λ³„λ„λ‘œ κ·œμ •ν•˜μ§€ μ•Šμ•„λ„ λ˜λŠ” κ²½μš°μ—λŠ” else 와 else if λ₯Ό μƒλž΅ν•  수 μžˆλ‹€.

λ˜ν•œ else λ§Œμ„ μΆ”κ°€ν•΄μ„œλ„ ꡬ문을 μž‘μ„±ν•  수 μžˆλ‹€.

// n이 5 이상인 경우 trueλ₯Ό 좜λ ₯ν•˜κ³ , λ°˜λŒ€μ˜ 경우 falseλ₯Ό 좜λ ₯ν•˜λŠ” 쑰건문
let n = 3
if (n >= 5) { 
	console.log(true)
} else {
	console.log(false)
}


이 κ²½μš°μ—λŠ” else 문이 n 이 μ•ž 쑰건의 λ°˜λŒ€ 상황을 μ˜λ―Έν•˜κΈ° λ•Œλ¬Έμ— n >= 5 인 쑰건에 λΆ€μ ν•©ν•œ λͺ¨λ“  경우의 μˆ˜λ“€μ΄ 이에 ν•΄λ‹Ήν•˜λŠ” 것이닀.

μ—¬κΈ°μ„œ μ•Œμ•„μ•Ό ν•  점은 n >= 5 의 λ°˜λŒ€κ°€ n < 5 λ§Œμ„ μ˜λ―Έν•˜λŠ” 것이 μ•„λ‹˜μ„ μ•Œμ•„μ•Ό ν•œλ‹€.

λ°˜λŒ€μ˜ κ²½μš°μ—λŠ” μˆ«μžκ°€ μ•„λ‹Œ 경우(NaN), 값이 μ •μ˜λ˜μ§€ μ•Šμ€ 경우(undefined), 값이 μ˜λ„μ μœΌλ‘œ λΉ„μ–΄μžˆλŠ” 경우(null) 등을 ν¬ν•¨ν•˜κΈ° λ•Œλ¬Έμ—, 쑰건의 μ˜λ„κ°€ n < 5 μ΄μ—ˆλ‹€λ©΄ μΆ”κ°€μ μœΌλ‘œ 쑰건을 μ œμ‹œν•΄μ•Ό ν•  것이닀.

λ§Œμ•½ ν•΄λ‹Ή 경우 μ½”λ“œλ₯Ό 이런 μ‹μœΌλ‘œ μˆ˜μ •ν•  수 μžˆλ‹€.

let n = NaN // n이 숫자 λ²”μœ„κ°€ μ•„λ‹Œ 상황듀을 else둜 μ œμ‹œ
if (n >= 5) { 
	console.log(true)
} else if (n < 5) {
	console.log(false)
} else {
	console.log('is Not a Number')
}


ν•΄λ‹Ή μ½”λ“œλŠ” μœ„μ—μ„œ μ–ΈκΈ‰ν–ˆλ˜ λ‚˜λ¨Έμ§€ κ²½μš°λ“€μ— λŒ€ν•΄ else λ₯Ό 톡해 μΌκ΄„μ μœΌλ‘œ μ •μ˜ν–ˆκ³ , μ•žμ— else if λ₯Ό μΆ”κ°€ν•˜μ—¬ n < 5 에 λŒ€ν•œ 쑰건을 μ œμ‹œν•˜μ˜€λ‹€.

μ•Œκ³ λ¦¬μ¦˜μ„ μž‘μ„±ν•˜λ‹€ 보면 쑰건에 λŒ€ν•œ λͺ…ν™•ν•œ μ œμ‹œκ°€ λ˜μ§€ μ•Šμ•„, λ‚œ μ •ν™•ν•˜κ²Œ μž…λ ₯ν•œ 것 같은데 μ˜ˆμ™Έμ˜ κ²½μš°μ— κ±Έλ € λ‹΅μ•ˆκ³Ό μΌμΉ˜ν•˜μ§€ μ•ŠλŠ” 상황이 λ°œμƒν•˜κΈ°λ„ ν•œλ‹€. κ·Έλ ‡κΈ° λ•Œλ¬Έμ—, 쑰건이 λͺ…ν™•ν•˜κ²Œ μ–΄λ–€ λ°”λ₯Ό μ˜λ―Έν•˜λŠ” 지에 λŒ€ν•œ 이해λ₯Ό λͺ…ν™•νžˆ ν•˜κ³  μ μ ˆν•˜κ²Œ ꡬ문을 μ‚¬μš©ν•˜μ—¬μ•Ό ν•œλ‹€.

πŸ’‘ if 와 else if λ§Œμ„ μ‚¬μš©ν•˜λŠ” 것

ν•΄λ‹Ή κ²½μš°μ—λ„ μœ„μ™€ λ§ˆμ°¬κ°€μ§€λΌκ³  μƒκ°ν•œλ‹€.

let n = NaN
if (n >= 5) { 
	console.log(true)
} else if (n < 5) {
  console.log(false)
}
console.log('else') // output : 'else'


μœ„ μ½”λ“œλ₯Ό 보면 λ³€μˆ˜ n 이 NaN 이기에 결과적으둜 'else' λΌλŠ” κ²°κ³Ό 값을 λ°˜ν™˜ν•œλ‹€.

μ΄λ ‡κ²Œ μ½”λ“œ 진행이 μ΄μ–΄μ§€κ²Œ ν•˜λŠ” 것이 μ˜λ„ 된 경우라면 상관이 μ—†μ§€λ§Œ, λ§Œμ•½ μˆ«μžκ°€ μ•„λ‹Œ κ²°κ³Όλ₯Ό 였λ₯˜λ‘œ κ°„μ£Όν•˜κ³  진행을 μ œμ–΄ν•΄μ•Ό ν•˜λŠ” 상황이라면 μ΄λŠ” λ¬Έμ œκ°€ 될 수 μžˆλ‹€.

μ‘°κ±΄λ¬Έμ—μ„œ μžμ‹ μ΄ μƒκ°ν•œ μ˜λ„μ™€ μ½”λ“œμ— μž‘μ„±λœ μ˜λ„κ°€ λͺ…ν™•νžˆ μΌμΉ˜ν•΄μ•Ό λ°œμƒν•  수 μžˆλŠ” 였λ₯˜λ₯Ό μ΅œμ†Œν•œμœΌλ‘œ ν•  수 μžˆλ‹€κ³  μƒκ°ν•œλ‹€.

그렇기에 μœ„ μ½”λ“œμ˜ κ²½μš°μ—λ„ κ·Έ μ˜λ„λ₯Ό λͺ…ν™•νžˆ 함이 μ€‘μš”ν•˜λ‹€κ³  μƒκ°ν•œλ‹€.


μ΄λ ‡κ²Œ if...else 의 문법에 λŒ€ν•΄ μ•Œμ•„λ³΄μ•˜κ³ , κ·Έλ ‡λ‹€λ©΄ μ‹€μ œλ‘œ 이 ꡬ문이 μ–΄λ–»κ²Œ μž‘λ™ν•˜λŠ” 지에 λŒ€ν•΄ μ•Œμ•„λ³΄μž.

if...else 문의 흐름

if...else 의 흐름에 λŒ€ν•΄μ„œ μ•Œμ•„λ³΄κΈ° 전에, μ•žμ—μ„œ μ œμ‹œν•œ μ˜ˆμ‹œ μ½”λ“œλ₯Ό 일뢀 λ³€ν˜•ν•œ 것을 μ‚΄νŽ΄ λ³΄λ©΄μ„œ μ•Œμ•„λ³΄μž.

let n = 3
if (n >= 5) { 
	console.log('n >= 5')
} else if (n < 5) {
	console.log('n < 5')
} else if (n === 3) {
  console.log(n)
} else {
	console.log('is Not a Number')
} // output : 'n < 5'


쑰건문의 흐름은 쑰건 일치 여뢀에 따라 κ·Έ 흐름이 κ²°μ •λ˜λŠ” 것은 이미 λ‹€ μ•Œκ³  μžˆμ„ 것이닀.

μœ„ 경우 λ³€μˆ˜ n 에 3 μ΄λΌλŠ” 값이 ν• λ‹Ήλ˜μ—ˆκ³ , κ²°κ³ΌλŠ” 3 을 좜λ ₯ν•  것 κ°™μ§€λ§Œ 'n < 5' λ₯Ό 좜λ ₯ν•˜λŠ” κ²°κ³Όλ₯Ό μ•Œ 수 μžˆλ‹€.

λ§Œμ•½ μ˜λ„ν•œ 좜λ ₯ 값이 3 이라면 μ΄λŠ” 였λ₯˜λ₯Ό 좜λ ₯ν•˜μ§€ μ•Šμ§€λ§Œ λ¬Έμ œκ°€ μžˆλŠ” ꡬ문이닀.

μ΄λŠ” μ•žμ˜ else if μ‘°κ±΄μ—μ„œ μ œμ‹œλœ n > 5 λΌλŠ” 쑰건이 λ‹€μŒμ˜ n === 3 μ΄λΌλŠ” 쑰건을 ν¬ν•¨ν•˜λŠ” μ‘°κ±΄μ΄μ—ˆκΈ°μ—, 3 μ΄λΌλŠ” 값을 μ €μž₯ν•œ λ³€μˆ˜ n 은 μ•žμ˜ 쑰건에 λŒ€ν•΄ true λ₯Ό λ°˜ν™˜ν•˜μ˜€κ³  κ·Έ μ‹œμ μ—μ„œ κ²°κ³Ό 값을 좜λ ₯ν•œ 것이닀.

이λ₯Ό μ˜λ„ν•œ λ°”κ°€ μš°μ„ μ μœΌλ‘œ 3 일 경우λ₯Ό μ°ΎκΈ° μœ„ν•¨μ΄λΌλ©΄ λ‹€μŒκ³Ό 같이 μˆ˜μ •ν•  수 μžˆλ‹€.

let n = 3
if (n === 3) { 
	console.log(n)
} else if (n < 5) {
	console.log('n < 5')
} else if (n >= 5) {
  console.log('n >= 5')
} else {
	console.log('is Not a Number')
} // output : 3


μ΄λ ‡κ²Œ μˆ˜μ •ν•œ κ²°κ³ΌλŠ” μ˜¬λ°”λ₯΄κ²Œ 3 μ΄λΌλŠ” 값을 λ°˜ν™˜ν•˜λŠ” 것을 μ•Œ 수 μžˆλ‹€.

μ΄λ ‡κ²Œ 쑰건문의 흐름은 μš°μ„ μ μœΌλ‘œ μž‘μ„±λœ μ‘°κ±΄μ—μ„œ λ©ˆμΆ”λ©΄ λ’€ 쑰건듀은 검증할 κΈ°νšŒκ°€ 주어지지 μ•ŠκΈ° λ•Œλ¬Έμ— 쑰건의 μˆœμ„œλ₯Ό μ •ν™•ν•˜κ²Œ ν•˜μ—¬ μ˜¬λ°”λ₯Έ κ²°κ³Όλ₯Ό λ„μΆœν•˜λ„λ‘ ν•΄μ•Ό ν•œλ‹€.

μ΄μ–΄μ„œ switch 문에 λŒ€ν•œ λ‚΄μš©μ„ κ°„λ‹¨ν•˜κ²Œ μ•Œμ•„λ³΄κ³  if 와 μ–΄λ–€ 차이점이 μžˆλŠ”μ§€μ— λŒ€ν•œ λ‚΄μš©μ„ μ•Œμ•„λ³΄μž.

πŸ”„ switch 문은 무엇인가

μš°μ„  switch 문도 μ œμ–΄λ¬Έμ˜ 일뢀이며 쑰건문에 ν¬ν•¨λœλ‹€.

switch 문을 κ°„λ‹¨ν•˜κ²Œ ν‘œν˜„ν•˜μžλ©΄ λ‹¨μˆœν•œ 볡수의 if 문을 ν‘œν˜„ν•˜λŠ” ꡬ문이라고도 ν‘œν˜„λœλ‹€. 이 말이 μ–΄λ–€ 의미λ₯Ό κ°–λŠ” 지 switch 문의 문법을 μ„€λͺ…ν•˜λ©΄μ„œ ν•¨κ»˜ μ•Œμ•„λ³΄μž.

switch 문의 문법과 κΈ°λŠ₯

switch 문은 λ‹€μŒκ³Ό 같은 문법을 κ°–λŠ”λ‹€.

switch (x) {
  case 'value1':  // if (x === 'value1')
    ...
    statement1
    
  case 'value2':  // if (x === 'value2')
    ...
    statement2

  default: // else
    ...
    statement3
}


μ–Έλœ» 보면 if λ¬Έκ³Ό λΉ„μŠ·ν•˜μ§€λ§Œ, μ‘°κ±΄μ—μ„œ μ†Œκ΄„ν˜Έ(())κ°€ μ—†λ‹€λŠ” 점과 μ‹€ν–‰ κ΅¬λ¬Έμ—μ„œ μ€‘κ΄„ν˜Έ({})λ₯Ό μ‚¬μš©ν•˜μ§€ μ•Šκ³  콜둠(:)을 μ‚¬μš©ν•œλ‹€λŠ” μ μ—μ„œ 문법적인 μš”μ†Œμ˜ 차이λ₯Ό 보여쀀닀.

그리고 switch 문의 κ²½μš°μ—λŠ” if κ°€ μ•„λ‹Œ case 문을 톡해 일치 μ—¬λΆ€λ₯Ό κ΅¬λΆ„ν•˜κ³ , else λŒ€μ‹  default 문을 톡해 λ°˜λŒ€μ˜ 경우λ₯Ό 좜λ ₯ν•˜κ±°λ‚˜ λ°˜ν™˜ν•œλ‹€.

λ˜ν•œ κΈ°λŠ₯적인 λΆ€λΆ„μ—μ„œλ„ 차이가 μ‘΄μž¬ν•˜λŠ”λ°, if 의 κ²½μš°μ—λŠ” 쑰건 μ§€μ •μ˜ μžμœ λ„κ°€ λ†’μ§€λ§Œ, switch 문의 κ²½μš°μ—λŠ” 일치 μ—¬λΆ€λ§Œ νŒλ³„ν•  수 있기 λ•Œλ¬Έμ— λ‹¨μˆœν•œ 쑰건만 μ œμ‹œν•  수 μžˆμŒμ„ μ•Œ 수 μžˆλ‹€.

μ΄λŸ¬ν•œ switch 문은 λ²”μœ„λ‚˜ λ³΅μž‘ν•œ 쑰건을 μ œμ‹œν•  κ²½μš°μ—λŠ” μ‚¬μš©ν•  수 μ—†μ§€λ§Œ, λ‹¨μˆœνžˆ 일치 μ—¬λΆ€λ§Œ νŒλ‹¨ν•΄μ•Ό ν•˜λŠ” if 문이 λ°˜λ³΅λ˜λŠ” 경우λ₯Ό λŒ€μ²΄ν•  수 μžˆλ‹€.

πŸ”– 좜처

switch 문 : JAVASCRIPT.INFO : switch문


πŸ’‘ switch λ¬Έ, μ–Έμ œ μž‘μ„±ν•΄μ•Ό ν• κΉŒ?

switch λ¬Έκ³Ό if...else 문의 차이점은 νƒμƒ‰ν•˜κ³ μž ν•˜λŠ” 데이터에 μ ‘κ·Όν•˜λŠ” λ°©μ‹μ—μ„œ 차이λ₯Ό λ³΄μ΄λŠ” κ²ƒμœΌλ‘œ μ΄ν•΄ν–ˆλ‹€.

μ •ν™•ν•œ λ‚΄μš©μ€ CS에 λŒ€ν•œ λ‚΄μš©μ΄κ³ , 아직 CSκ°€ λΆ€μ‘±ν•œ λ³ΈμΈμ—κ²Œ μ™„λ²½ν•œ 이해가 λ˜μ§€ μ•ŠκΈ°μ— μ΅œλŒ€ν•œ κ°„λ‹¨ν•˜κ²Œ ν•΄μ„ν•˜μ—¬ μž‘μ„±ν•œλ‹€.

κ°„λ‹¨ν•˜κ²Œ λ§ν•˜μžλ©΄, if...else 문의 경우 쑰건에 λ§Œμ‘±ν•˜λŠ” 지λ₯Ό κ΅¬λΆ„ν•˜μ—¬ 순차적으둜 νŒλ‹¨ν•˜λŠ” λ°˜λ©΄μ—, switch 문의 경우 μž…λ ₯ 값에 ν•΄λ‹Ήν•˜λŠ” 점프 ν…Œμ΄λΈ”μ˜ μœ„μΉ˜λ‘œ jump ν•˜λŠ” 방식을 μ±„νƒν•œλ‹€.

그렇기에, 점프 ν…Œμ΄λΈ”μ„ λ³„λ„λ‘œ λ§Œλ“€μ§€ μ•Šμ§€λ§Œ νŠΉμ • 데이터λ₯Ό μ°ΎκΈ° μœ„ν•΄ κ΅¬λΆ„ν•˜λŠ” κ³Όμ •(쑰건 ꡬ뢄)이 μ§€μ†μ μœΌλ‘œ μ‘΄μž¬ν•˜λŠ” if...else 문의 경우 쑰건의 μˆ˜κ°€ 적을 수둝 μœ λ¦¬ν•˜λ‹€.

λ°˜λŒ€λ‘œ κ΅¬λΆ„ν•˜λŠ” 과정이 λŒ€μž… 값이 λ¬΄μ—‡μΈμ§€λ§Œ ν™•μΈν•˜μ§€λ§Œ, 점프 ν…Œμ΄λΈ”μ„ λ§Œλ“œλŠ” 과정이 ν•„μš”ν•œ switch 문의 경우 쑰건의 μˆ˜κ°€ λ§Žμ„μˆ˜λ‘ μœ λ¦¬ν•˜λ‹€.

λ‹Ήμ—°νžˆλ„ ν•΄λ‹Ή λ‚΄μš©μ€ if...else 와 switch λ‘˜ λ‹€ μ‚¬μš©ν•  수 μžˆλŠ” κ²½μš°μ— ν•΄λ‹Ήν•œλ‹€! πŸ˜†

πŸ”– 좜처

if...else vs switch : THINK-PRO BLOG : switchλ¬Έκ³Ό if문의 μ„±λŠ₯ 비ꡐ (ISA κ΄€μ μ—μ„œ)

πŸ”– 전체적인 μ°Έκ³ 

MDN Web Docs : if...else
MDN Web Docs : switch

profile
μ΄μœ μ— μ§‘μ°©ν•˜λŠ” ν”„λ‘ νŠΈμ—”λ“œ 개발자 μ§€λ§μƒμž…λ‹ˆλ‹€ 🧐

0개의 λŒ“κΈ€