프로그램의 세가지 구조
순서대로 처리하는 순차 구조, 조건에 따라 분기하는 선택 구조, 처리를 반복하는 반복 구조
단순 분기 - C와 동일
Ifif ~ else if ~ else if ~ ...와 같은 구문에서 복수의 조건이 만족해도 실행되는 블록은 처음 한 블록분기가 내부에서 중첩해서 일어나는 것을 Nest 라고 한다.
너무 깊은 nest 는 피하는 것이 좋고, indentation 을 지키는 게 모두가 보기 쉽다.
또한 위의 else if 처럼 한 줄 명령은 중괄호를 생략할 수 있지만 문제가 발생하기 쉽다.첫째는 블록의 범위를 알기 어려울 때가 있으며, 둘째는 중괄호를 생략한 경우 else 블록은 가장 가까운 if 에 대응한다는 문제점이 있다.
switch동일 변수에 대한 비교를 다룰 때 if 보다 나은 것이 switch 이다.default 가 필수는 아니지만 명확한 처리를 위해 생략하지 않는 것이 좋고case 를 열면 break 를 처리해주는 것을 잊지 말아야 한다는 점을 제외하고는C 와 동일하다.
while, do while, for - C와 동일for .. infor in 명령은 배열 / 연상배열, 객체 내의 요소들에 대해서 선두부터 순서대로 반복 처리를 하는 명령이다.
가변수에는 인덱스, 키이름, 멤버명 등이 대입된다.
for in 은 연상배열, 객체의 키를 조회할 경우에 한해서 사용하는 것이 좋다.
label (레이블)
예외 처리위와 같이 빠져나오고자 하는 루프의 선두에 레이블을 지정하면 된다.
switch 명령 안에서 break 를 이용한다 해도 switch 명령만을 빠져나오기 때문에 switch 를 감싸는 루프를 나오려면 레이블을 사용한다.
프로그래밍 중 여러가지 요인에 의하여 예외 발생을 완벽히 막을 수는 없다.이러한 경우에 스크립트 전체가 정지하지 않도록 하는 것이 예외 처리.try ... catch ... finally 위 코드에서 try catch 를 사용하지 않았다면 //예외발생 시점에서 스크립트가 정지되었을 것이다.
예외는 직접 발생시키는 것도 가능하다.
예외처리는 스크립트의 확실한 동작을 위해서는 없어서는 안되지만, 오버헤드가 크다. 따라서 루프 안에서 try catch 는 피해야 한다.try catch 블록을 루프 밖에 둘 수 있는지를 먼저 검토해야 한다.