if...else
if...else
if...else 문은 지정된 조건이 truthy일 때 하나의 문(statement)을 실행하고, 조건이 falsy일 때 선택적 else 절의 다른 문을 실행합니다.
출처: if...else
본문
if...else 문은 지정된 조건이 truthy일 때 문을 실행하고, 조건이 falsy일 때 선택적 else 절에 있는 다른 문을 실행합니다.
구문 (Syntax)
if (condition)
statement1
// With an else clause
if (condition)
statement1
else
statement2
condition: truthy 또는 falsy로 간주되는 표현식입니다.statement1:condition이 truthy일 때 실행되는 문입니다. 더 중첩된if문을 포함한 어떤 문이든 될 수 있습니다. 여러 문을 실행하려면 블록 문({ /* ... */ })을 사용해 묶으세요. 아무 문도 실행하지 않으려면 빈 문(empty statement)을 사용하세요.statement2:condition이 falsy이고else절이 존재할 때 실행되는 문입니다. 블록 문과 더 중첩된if문을 포함해 어떤 문이든 될 수 있습니다.
설명 (Description)
여러 개의 if...else 문을 중첩해 else if 절을 만들 수 있습니다. JavaScript에는 elseif(한 단어) 키워드가 없다는 점에 유의하세요.
if (condition1)
statement1
else if (condition2)
statement2
else if (condition3)
statement3
// …
else
statementN
조건은 하나가 true로 평가될 때까지 순서대로 평가됩니다. 그 시점에서 관련 문이 실행되고 나머지 else if 절은 건너뜁니다.
절 내에서 여러 문을 실행하려면 블록 문({ /* ... */ })을 사용해 묶어야 합니다.
블록을 사용하지 않으면 혼란스러운 동작이 발생할 수 있습니다. 특히 코드가 수동으로 포맷된 경우에 그렇습니다. 예를 들어:
function checkValue(a, b) {
if (a === 1)
if (b === 2)
console.log("a is 1 and b is 2");
else
console.log("a is not 1");
}
이 코드는 무해해 보이지만, checkValue(1, 3)을 실행하면 "a is not 1"이 로그됩니다. 이는 dangling else(매달린 else)의 경우 else 절이 가장 가까운 if 절에 연결되기 때문입니다. 일반적으로 중첩된 if 문을 포함하는 코드에서는 항상 블록 문을 사용하는 것이 좋은 습관입니다.
원시 boolean 값 true와 false를 Boolean 객체의 truthiness/falsiness와 혼동하지 마세요. false, undefined, null, 0, -0, NaN, 빈 문자열("")이 아닌 모든 값과 모든 객체(값이 false인 Boolean 객체 포함)는 조건으로 사용될 때 truthy로 간주됩니다.
const b = new Boolean(false);
if (b) {
console.log("b is truthy"); // "b is truthy"
}
예제: 조건으로 할당(assignment) 사용하기
x = y 같은 할당을 조건으로 하는 if...else는 거의 사용하면 안 됩니다.
if ((x = y)) {
// …
}
while 루프와 달리 조건은 한 번만 평가되므로 할당도 한 번만 수행됩니다. 위 코드는 다음 코드와 동일합니다.
x = y;
if (x) {
// …
}