1. 조건문
1.1 if문
- cf. MDN if
1// 조건문 Conditional Statement2// if(조건) { }3// if(조건) { } else {}4// if(조건1) { } else if(조건2) {} else {}5let fruit = 'orange'6if (fruit === 'apple') {7console.log('🍎')8} else if (fruit === 'orange') {9console.log('🍊')10} else {11console.log('😍')12}1314if (2 < 1) {15console.log('출력되면 안됨!')16}
1.2 삼항 연산자
- cf. MDN 삼항조건연산자
1// 삼항 조건 연산자 Ternary Operator2// 조건식 ? 참인경우 : 거짓인경우3let fruit = 'apple'4if (fruit === 'apple') {5console.log('🍎')6} else {7console.log('😍')8}9fruit === 'apple' ? console.log('🍎') : console.log('😍')1011let emoji = fruit === 'apple' ? '🍎' : '😍'12console.log(emoji)
1.3 switch문
- 언제 if를 쓰고 언제 switch를 쓰나?
- 정해진 범위안의 값에 대해 특정한 일을 해야 하는 경우
- if문을 쓰면, if else if else if else if … else 길어짐
- cf. MDN switch
1// 조건문 Conditional Statement2// switch3// if else if else if else if ... else4let day = 6 // 0:월요일, 1: 화요일... 6: 일요일5let dayName6if (day === 0) {7dayName = '월요일'8} else if (day === 1) {9dayName = '화요일'10} else if (day === 2) {11dayName = '수요일'12} else if (day === 3) {13dayName = '목요일'14} else if (day === 4) {15dayName = '금요일'16} else if (day === 5) {17dayName = '토요일'18} else if (day === 6) {19dayName = '일요일'20}2122switch (day) {23case 0:24dayName = '월요일'25break26case 1:27dayName = '화요일'28break29case 2:30dayName = '수요일'31break32case 3:33dayName = '목요일'34break35case 4:36dayName = '금요일'37break38case 5:39dayName = '토요일'40break41case 6:42dayName = '일요일'43break44default:45console.log('해당하는 요일이 없음!')46}47console.log(dayName) // 일요일4849let condition = 'bad' // okay, good -> 좋음!, bad -> 나쁨!50let text51switch (condition) {52case 'okay':53case 'good':54text = '좋음!'55break56case 'bad':57text = '나쁨!'58break59}60console.log(text) // 나쁨!
2. 에러 처리
1// 2.error-handling.js2// try catch finally 문3function readFile(path) {4// throw : 에러를 던짐, 즉 에러 발생5throw new Error('파일 경로를 찾을 수 없음')6return '파일의 내용'7}89function processFile(path) {10let content11try {12content = readFile(path)13} catch (error) {14// 예상하지 못한 에러가 발생하면15console.log(error)16content = '기본내용'17} finally {18console.log('성공하든 실패하든 마지막으로 리소스를 정리함!')19}20const result = 'hi ' + content21return result22}2324const result = processFile('경로')25console.log(result)
2.1 에러 버블링
1// 3.error-bubbling.js2// 에러가 Bubbling up(위로 올라가는), Propagating(전파되는) 🧼3// 내가 처리할 수 있는 곳에서 에러 처리하는 법4function a() {5throw new Error('error!') // 에러 발생할 떄, 에러를 던지는 throw6}78function b() {9try {10a()11} catch (error) {12console.log('생각해보니깐 이 에러는 내가 핸들링 할 수 없을 것 같군!')13throw error // 다시 에러를 던지기14}15}1617function c() {18b()19}2021try {22c() // C를 실행, c -> b -> a23} catch (error) {24console.log('Catched!')25}26console.log('done!')