조건문
업데이트: 2007년 11월
기본적으로 JScript 코드에서 명령은 순차적으로 실행됩니다. 그러나, 논리적인 순서를 변경하여 특정 조건에 따라 코드의 다른 부분으로 제어를 이동하는 것이 유용한 경우도 있습니다. 제어 구조를 사용하면 조건문 테스트 결과가 true인지 false인지에 따라 두 지점 중 한 곳으로 프로그램 제어가 이동합니다. 부울 값으로 강제 변환할 수 있는 식은 모두 조건문으로 사용할 수 있습니다. 다음에서 일반적인 조건문을 몇가지 설명합니다.
같음 및 완전 같음
조건문에 같음 연산자(==)를 사용하여 그 조건문에 전달된 두 인수가 같은 값을 가지는지 확인할 수 있습니다. 이 때 필요하면 형식 변환을 수행하여 비교합니다. 완전 같음 연산자**===**)는 두 식의 값과 형식을 모두 비교하여 두 피연산자 값과 데이터 형식이 모두 같은 경우에만 true를 반환합니다. 완전 같음 연산자의 경우 서로 다른 숫자 데이터 형식 간에는 구별하지 않습니다.
다음 JScript 코드는 같음 연산자와 그 연산자를 사용하는 if 문을 결합한 것입니다. 자세한 내용은 제어 구조를 참조하십시오.
function is2000(x) : String {
// Check if the value of x can be converted to 2000.
if (x == 2000) {
// Check is the value of x is strictly equal to 2000.
if(x === 2000)
print("The argument is number 2000.");
else
print("The argument can be converted to 2000.");
} else {
print("The argument is not 2000.");
}
}
// Check several values to see if they are 2000.
print("Check the number 2000.");
is2000(2000);
print("Check the string \"2000\".");
is2000("2000")
print("Check the number 2001.");
is2000(2001);
이 코드는 다음과 같이 출력됩니다.
Check the number 2000.
The argument is number 2000.
Check the string "2000".
The argument can be converted to 2000.
Check the number 2001.
The argument is not 2000.
같지 않음 및 완전 같지 않음
같지 않음 연산자(!=)를 사용하면 같음 연산자와 반대의 결과를 반환합니다. 피연산자에 같은 값이 있으면 같지 않음 연산자가 false를 반환하고, 그렇지 않으면 true를 반환합니다. 마찬가지로 완전 같지 않음 연산자(!==)를 사용하면 완전 같음 연산자와 반대의 결과를 반환합니다.
다음 JScript 코드 샘플에서는 while 루프를 제어하는 데 같지 않음 연산자를 사용합니다. 자세한 내용은 제어 구조를 참조하십시오.
var counter = 1;
// Loop over the print statement while counter is not equal to 5.
while (counter != 5) {
print(counter++);
}
이 코드는 다음과 같이 출력됩니다.
1
2
3
4
비교
데이터에 특정 값이 들어 있으면 같음 연산자 및 같지 않음 연산자가 유용합니다. 그러나 값이 특정 범위 내에 있는지 코드를 검사해야 하는 경우도 있습니다. 이러한 경우에는 보다 작음(<), 보다 큼(>), 작거나 같음(<=), 크거나 같음(>=)과 같은 관계 연산자를 사용할 수 있습니다.
if(tempInCelsius < 0)
print("Water is frozen.")
else if(tempInCelsius > 100)
print("Water is vapor.");
else
print("Water is liquid.);
단락
여러 조건을 함께 테스트해야 하는 경우 어느 한 조건이 다른 조건들보다 실패하거나 성공할 확률이 크다면 단락(short circuit) 계산이라는 기능을 사용하여 스크립트 실행 속도를 빠르게 하고 오류를 발생시키는 부수 효과를 피할 수 있습니다. JScript에서는 논리식을 평가할 때 결과를 산출하는 데 필요한 만큼의 하위 식만 평가합니다.
논리곱(&&) 연산자는 전달된 왼쪽 식을 먼저 평가합니다. 그 식이 false로 변환되면 논리곱 연산자의 결과는 오른쪽 식의 값에 관계 없이 true일 수 없습니다. 따라서 오른쪽 식은 평가되지 않습니다.
예를 들어, ((x == 123) && (y == 42))에서는 먼저 x가 123인지 확인합니다. x가 123이 아니면 y에 대한 테스트는 수행되지 않으며 JScript에서는 false 값을 반환합니다.
마찬가지로 논리합 연산자(||)는 왼쪽 식을 먼저 평가하며, true로 변환되는 경우 오른쪽 식은 평가되지 않습니다.
단락 계산 기능은 테스트할 조건에 함수 호출 실행이나 다른 복잡한 식이 있을 경우 유용합니다. 스크립트를 가장 효율적으로 실행하려면 논리합 연산자의 경우에는 true일 가능성이 가장 큰 조건을 먼저 배치하고, 논리곱 연산자인 경우에는 false일 가능성이 가장 큰 조건을 먼저 배치합니다.
이런 식으로 스크립트를 만들 경우 다음과 같은 예제에서 **runfirst()**의 반환 값이 false로 변환되면 **runsecond()**는 실행되지 않는다는 이점이 있습니다.
if ((runfirst() == 0) || (runsecond() == 0)) {
// some code
}
다음 예제에서는 이런 식으로 스크립트를 만들면 어떠한 이점이 있는지 보여 줍니다. 다음 예제에서는 **runfirst()**의 반환 값이 false로 변환되면 **runsecond()**는 실행되지 않습니다.
if ((x == 0) && (y/x == 5)) {
// some code
}
기타
부울 값으로 변환할 수 있는 식은 모두 조건문으로 사용할 수 있습니다. 예를 들어, 다음과 같이 식을 사용할 수 있습니다.
if (x = y + z) // This may not do what you expect - see below!
위의 코드에서는 하나의 등호만 사용하므로 x가 y + z와 같은지 확인하지 않습니다. 대신 y + z의 값을 변수 x에 할당한 다음 전체 식의 결과인 x 값을 true 값으로 변환할 수 있는지 검사합니다. x가 y + z와 같은지 검사하려면 다음 코드를 사용합니다.
if (x == y + z) // This is different from the code above!