if 문은 자바스크립트가 무언가를 결정할 수 있는, 아니 더 정확히 말하자면 조건부로 문장을 실행할 수 있는 기능을 제공하는 기본적인 제어문이다.
이 문장은 두가지 형태로 쓰일 수 있는데, 첫 번째는 다음과 같다.
위의 형태에서 '표현식'을 평가한 결과값이 true 이거나 true로 변환될 수 있으면 '문장'이 실행된다. '표현식'이 false이거나 false로 변환될 수 있으면 '문장'은 실행되지 않는다. 예를 들어보자.
또는 유사하게 다음과 같이 쓸 수도 있다.
// 이때 이어지는 문장에서 username에 새로운 값을 할당한다.
if (!username) username = "John Doe";
어색해 보일지도 모르지만, if에서는 표현식을 괄호로 묶는 것이 올바른 문법이다.
이전의 절에서 언급한 바와 같이 언제라도 단일 문장을 문장 블록으로 교체할 수 있다. 따라서 if 문은 다음과 같은 형태가 될 수도 있다.
alert("Please specity a mailing address.");
위 예에서 들여쓰기는 필수 사항이 아니다. 자바스크립트에서 필요 이상의 공백이나 탭은 무시해도 된다. 또한 모든 기본 문장 뒤에는 세미콜론이 위치하기 때문에, 위의 예를 모조리 한 줄에 쓸 수도 있다. 하지만 줄 나눔이나 들여쓰기를 함으로써 보다 쉽게 읽고 이해할 수 있는 코드가 된다.
if 문의 두번째 형태에서는 '표현식'이 false일 때 실행되는 else 절이 등장한다. 문법은 다음과 같다.
위와 같은 형태의 문장에서 '표현식'이 평가된 후 그 값이 true이면 '문장1'이 실행된다. 그렇지않으면 '문장2'가 실행된다. 예를보자.
alert("Hello" + username);
중첩된 if 문에서 else 절을 사용하려면 else 정이 올바른 if 문에 속하도록 각별히 주의해야 한다. 다음 예를 살펴보자.
k = 2;
if (i == j)
위 예에서 바깥쪽 if 문의 문법에서 허용하는 바와 같이 안쪽의 if문은 단일 문장을 형성하고 있다. 하지만 불행히도 else 절이 어느 if 문에 속하는지 분명하지가 않다(오직 들여쓰기가 힌트를 줄 뿐이다.) 그리고 위 예에서 들여쓰기 힌트는 잘못되었다. 자바스크립트 인터프리터가 수행하는 위 예에 대한 실제 해석은 다음과 같기 때문이다.
대부분의 프로그램 언어와 마찬가지로 자바스크립트의 규칙에 의하면 else 절은 기본적으로 가장 가까운 if 문에 속한다. 위 예에서 모호함을 없애는 동시에, 읽고 이해하고 관리하고 디버깅하기 쉽게 고치려면 다음과 같이 중괄호를 써야 한다.
else { // 단지 중괄호 하나 넣었을 뿐인데..
이 책의 스타일은 아니지만 많은 프로그래머가 if나 else 문의 몸체가 단 하나의 문장만으로 구성되더라도 이를 중괄호로 묶는 습관을 익히곤 한다. (whie 루프같은 다른 복합문에서도 마찬가지다.) 여러분이 언제나 이런 습관으로 코딩한다면 앞에서 봤던 종류의 문제를 예방할 수 있다.
'IT_Programming > JavaScript' 카테고리의 다른 글
자바스크립트 완벽가이드 - 6.5 switch (0) | 2010.07.04 |
---|---|
자바스크립트 완벽가이드 - 6.4 else if (0) | 2010.07.04 |
자바스크립트 완벽가이드 - 6.2 복합문 (0) | 2010.07.04 |
자바스크립트 완벽가이드 - 6.1 표현문 (0) | 2010.07.04 |
자바스크립트 완벽가이드 - 5.10 기타 연산자들 (0) | 2010.07.04 |