🎉 berenickt 블로그에 온 걸 환영합니다. 🎉
Lang
JavaScript
09-조건문 & 에러처리(Control Flow)

1. 조건문

1.1 if문

1
// 조건문 Conditional Statement
2
// if(조건) { }
3
// if(조건) { } else {}
4
// if(조건1) { } else if(조건2) {} else {}
5
let fruit = 'orange'
6
if (fruit === 'apple') {
7
console.log('🍎')
8
} else if (fruit === 'orange') {
9
console.log('🍊')
10
} else {
11
console.log('😍')
12
}
13
14
if (2 < 1) {
15
console.log('출력되면 안됨!')
16
}

1.2 삼항 연산자

1
// 삼항 조건 연산자 Ternary Operator
2
// 조건식 ? 참인경우 : 거짓인경우
3
let fruit = 'apple'
4
if (fruit === 'apple') {
5
console.log('🍎')
6
} else {
7
console.log('😍')
8
}
9
fruit === 'apple' ? console.log('🍎') : console.log('😍')
10
11
let emoji = fruit === 'apple' ? '🍎' : '😍'
12
console.log(emoji)

1.3 switch문

  • 언제 if를 쓰고 언제 switch를 쓰나?
    • 정해진 범위안의 값에 대해 특정한 일을 해야 하는 경우
    • if문을 쓰면, if else if else if else if … else 길어짐
  • cf. MDN switch
1
// 조건문 Conditional Statement
2
// switch
3
// if else if else if else if ... else
4
let day = 6 // 0:월요일, 1: 화요일... 6: 일요일
5
let dayName
6
if (day === 0) {
7
dayName = '월요일'
8
} else if (day === 1) {
9
dayName = '화요일'
10
} else if (day === 2) {
11
dayName = '수요일'
12
} else if (day === 3) {
13
dayName = '목요일'
14
} else if (day === 4) {
15
dayName = '금요일'
16
} else if (day === 5) {
17
dayName = '토요일'
18
} else if (day === 6) {
19
dayName = '일요일'
20
}
21
22
switch (day) {
23
case 0:
24
dayName = '월요일'
25
break
26
case 1:
27
dayName = '화요일'
28
break
29
case 2:
30
dayName = '수요일'
31
break
32
case 3:
33
dayName = '목요일'
34
break
35
case 4:
36
dayName = '금요일'
37
break
38
case 5:
39
dayName = '토요일'
40
break
41
case 6:
42
dayName = '일요일'
43
break
44
default:
45
console.log('해당하는 요일이 없음!')
46
}
47
console.log(dayName) // 일요일
48
49
let condition = 'bad' // okay, good -> 좋음!, bad -> 나쁨!
50
let text
51
switch (condition) {
52
case 'okay':
53
case 'good':
54
text = '좋음!'
55
break
56
case 'bad':
57
text = '나쁨!'
58
break
59
}
60
console.log(text) // 나쁨!

2. 에러 처리

1
// 2.error-handling.js
2
// try catch finally 문
3
function readFile(path) {
4
// throw : 에러를 던짐, 즉 에러 발생
5
throw new Error('파일 경로를 찾을 수 없음')
6
return '파일의 내용'
7
}
8
9
function processFile(path) {
10
let content
11
try {
12
content = readFile(path)
13
} catch (error) {
14
// 예상하지 못한 에러가 발생하면
15
console.log(error)
16
content = '기본내용'
17
} finally {
18
console.log('성공하든 실패하든 마지막으로 리소스를 정리함!')
19
}
20
const result = 'hi ' + content
21
return result
22
}
23
24
const result = processFile('경로')
25
console.log(result)

2.1 에러 버블링

1
// 3.error-bubbling.js
2
// 에러가 Bubbling up(위로 올라가는), Propagating(전파되는) 🧼
3
// 내가 처리할 수 있는 곳에서 에러 처리하는 법
4
function a() {
5
throw new Error('error!') // 에러 발생할 떄, 에러를 던지는 throw
6
}
7
8
function b() {
9
try {
10
a()
11
} catch (error) {
12
console.log('생각해보니깐 이 에러는 내가 핸들링 할 수 없을 것 같군!')
13
throw error // 다시 에러를 던지기
14
}
15
}
16
17
function c() {
18
b()
19
}
20
21
try {
22
c() // C를 실행, c -> b -> a
23
} catch (error) {
24
console.log('Catched!')
25
}
26
console.log('done!')