# 흐름 제어 ## 조건문 자바스크립트의 조건문은 자바나 C의 조건문과 같습니다. ```javascript if (조건식) { ... } ``` ```javascript if (조건식) { ... } else { ... } ``` ```javascript if (조건식) { ... } else if (조건식) { ... } else { ... } ``` 자바스크립트에서는 다음의 값은 거짓으로 평가되며 그 외에는 참으로 평가됩니다. - false - undefined - null - 0 - NaN - "" 빈 문자열. Boolean 객체의 값이 false인 경우라도, 조건식에서는 true로 평가됩니다. 주의하세요. ```javascript let a = new Boolean(false); if (a) { console.log("yes"); // 여기가 실행됩니다. } else { console.log("no"); } ``` ```javascript switch (표현식) { case: ... break; default: ... break; } ``` ## 반복문 기본적인 반복문은 C 스타일의 반복문과 같습니다. ```javascript for (초기식;조건식;증감식) { ... } ``` ```javascript while (조건식) { ... } ``` ```javascript do { ... } while (조건식); ``` ```javascript break; ``` ```javascript continue; ``` ### for … in 객체의 속성을 통해서 반복합니다. ```javascript let charlie = { age: 14, name: "Charlie" }; for (let prop in charlie) { console.log(prop + " = " + charlie[prop]); } ``` ### for … of 배열 등 반복 가능한 객체를 반복합니다. ```javascript let array = [1, 2, 3, 4, 5]; for (let item of array) { console.log(item); } ``` ## 예외 처리 예외 처리 구문은 자바의 예외 처리 구문과 비슷합니다. ```javascript try { ... } catch(e) { ... } try { ... } catch(e) { ... } finally { ... } ``` try 블록을 실행하는 도중 예외가 발생하면, catch 블록으로 넘어갑니다. catch문에서는 throw 구문에서 던진 객체를 받을 수 있습니다. try 블록이 성공하든 실패하든 finally 블록은 무조건 실행됩니다. 만일, finally 블록에서 return으로 값을 반환하는 경우에, try 블록이나 catch 블록의 return 값은 무시됩니다. ```javascript throw 표현식; ``` 예외를 발생시킬 때 사용합니다. 객체, 숫자, 문자열 등 무엇이든 던질 수 있습니다. ```javascript function fun1() { throw { code: 1, message: "Error" }; } try { fun1(); } catch (e) { console.warn(e.message); } finally { console.log("The End"); } ```