제어문

반복문

for 문

for 문 괄호 안에서 처음에 나오는 초기화 부분에서 선언된 변수는 블록문에서 정의되는 것이 아니다. 왜냐면 다음과 같은 코드에서 만일 괄호 안에서 선언된 i가 같은 블록문 안에서 선언된 것이라면 블록문 안에서 선언된 i와 중복이 되어 에러가 발생할 것이지만 실행하면 에러가 안난다.

for (let i = 0; i < 5; i++) {
  let i = 10;
  console.log(i);
}

위의 것은 아마도 다음과 같이 작동하는 것 같다. 즉, for 괄호 안에 정의되는 변수는 바깥 블록에서 정의되는 것이고 for 블록은 안쪽 블록으로 해석할 수 있을 것 같다. 즉, 다음과 같이 쓸 수 있지 않을까 생각된다.

{ // 이 블록이 for 괄호 안에서 정의되는 부분이다.
  let i = 0;
  { // 이 블록이 for 괄호 다음에 나오는 블록이다.
    let i = 10;
    console.log(i);
  }
}
for (let i = 0; i < 3; i++) {
  console.log(i);
}

for … in 문

for ... in 문은 객체의 프로퍼티에 대해서 루프를 실행한다.

for (변수 in 객체) {
  구문;
}

위에서 변수는 객체의 프로퍼티를 하나씩 순회하게 된다.

const player = {name: "David", age: 27, rank: "Middle"};
for (let prop in player) {
  if (!player.hasOwnProperty(prop))
    continue;
  console.log(prop + ":" + player[prop]);
}

for … of 문

for ... of 문은 ES6에서 생긴 반복문으로 배열은 물론 이터러블(iterable) 객체에 모두 사용할 수 있다.

배열을 예로 들면 다음과 같다.

const hand = ['Diamond', 'Gold', 'Silver'];
for (const stone of hand) {
  console.log(`You kicked ...${stone}`);
}

while 문

do while 문

레이블 문

break 문

continue 문

조건문

if 문

switch 문

예외

throw 문

try … catch 문