JScript 할당 및 같음 연산자

JScript에서는 할당 연산자를 사용하여 변수에 값을 할당합니다. 같음 연산자는 두 개의 값을 비교합니다.

할당 연산자

JScript에서는 일반적인 프로그래밍 언어와 마찬가지로 등호(=)를 사용하여 변수에 값을 할당하는데 이를 할당 연산자라고 합니다. = 연산자의 왼쪽 피연산자는 Lvalue여야 합니다. 즉, 변수, 배열 요소 또는 개체 속성이어야 합니다.

= 연산자의 오른쪽 피연산자는 Rvalue이어야 합니다. Rvalue는 식의 결과 값을 포함하여 모든 형식의 임의 값이 될 수 있습니다. 다음은 JScript 할당문의 예제입니다.

anInteger = 3;

JScript에서는 이 문을 다음과 같은 의미로 해석합니다.

"3이라는 값을 변수 anInteger에 할당합니다"

또는

"anInteger는 3이라는 값을 사용합니다."

형식 주석을 사용하여 문의 변수를 특정 데이터 형식에 바인딩하지 않으면 할당은 항상 성공적으로 수행됩니다. 그렇지 않으면 컴파일러에서 LvalueRvalue의 데이터 형식으로 변환하려고 시도합니다. 성공적으로 변환할 수 없으면 컴파일러 오류가 발생합니다. 일부 값은 성공적으로 변환하고 다른 일부 값을 변환하지 못하면 코드 실행 시 변환에 실패할 수 있다는 경고 메시지가 생성됩니다.

다음 예제에서는 변수 i에 저장된 정수 값이 변수 x 할당될 때 실수(double) 값으로 변환됩니다.

var i : int = 29;
var x : double = i;

자세한 내용은 형식 변환을 참조하십시오.

같음

일부 프로그래밍 언어들과는 달리 JScript에서는 등호(=)를 비교 연산자로는 사용하지 않고 할당 연산자로만 사용합니다. 두 값을 비교하려면 같음 연산자(==) 또는 완전 같음 연산자(===)를 사용할 수 있습니다.

같음 연산자는 기본 문자열, 숫자 및 boolean을 값을 사용하여 비교합니다. 형식 변환을 한(필요한 경우) 후 두 변수의 값이 같으면 같음 연산자는 true를 반환합니다. Array, Function, String, Number, Boolean, Error, Date, RegExp 등의 개체는 참조를 사용하여 비교합니다. 두 개체 변수의 값이 같더라도 완전히 같은 개체를 참조하는 경우에만 true가 반환됩니다.

완전 같음 연산자는 두 식의 값과 형식을 모두 비교합니다. 같음 연산자를 사용하여 두 식이 동일한 것으로 비교되고 두 피연산자의 데이터 형식이 같은 경우에만 true가 반환됩니다.

참고

완전 같음 연산자는 서로 다른 숫자 데이터 형식을 구별하지 않습니다. 할당 연산자, 같음 연산자 및 완전 같음 연산자의 차이점을 확실히 알아야 합니다.

스크립트에서 비교 결과는 항상 Boolean입니다. 다음 JScript 코드 줄을 살펴봅니다.

y = (x == 2000);

이 예제는 변수 x의 값이 숫자 2000 값과 같은지 테스트합니다. 같은 경우 비교 결과는 부울 값 true이며 이 값은 변수 y에 할당됩니다**.** x가 2000과 같지 않으면 비교 결과는 부울 값 false이며 y에 할당됩니다.

같음 연산자는 값이 같은지 검사하기 위해 형식을 변환합니다. 다음 JScript 코드 줄에서 리터럴 문자열 "42"는 숫자로 변환된 후 숫자 42와 비교됩니다. 결과는 true입니다.

42 == "42";

개체를 비교할 때는 여러 규칙을 사용합니다. 같음 연산자의 동작은 개체 형식에 따라 결정됩니다. 개체가 같음 연산자를 사용하여 정의된 클래스의 인스턴스인 경우에는 같음 연산자의 구현에 따라 값이 반환됩니다. 다른 .NET Framework 언어에서는 같음 연산자를 제공하는 클래스를 정의할 수 있지만 JScript에서는 정의할 수 없습니다.

JScript Object 개체 또는 JScript 클래스 인스턴스를 기반으로 한 개체와 같이 같음 연산자가 정의되지 않은 개체는 두 개체가 모두 동일한 개체를 참조하는 경우에만 같은 것으로 비교됩니다. 즉, 서로 다른 두 개체는 동일한 데이터를 포함하더라도 서로 다른 것으로 비교됩니다. 다음 예제는 이 동작을 보여 줍니다.

// A primitive string.
var string1 = "Hello";
// Two distinct String objects with the same value.
var StringObject1 = new String(string1);
var StringObject2 = new String(string1);

// An object converts to a primitive when
// comparing an object and a primitive.
print(string1 == StringObject1);   // Prints true.

// Two distinct objects compare as different.
print(StringObject1 == StringObject2);   // Prints false.

// Use the toString() or valueOf() methods to compare object values.
print(StringObject1.valueOf() == StringObject2);   // Prints true.

같음 연산자는 제어 구조의 조건문에 특히 유용합니다. 제어 구조의 조건문에서는 같음 연산자와 이 연산자를 사용하는 문을 결합합니다. 다음 JScript 코드 예제를 살펴봅니다.

if (x == 2000)
   z = z + 1;
else
   x = x + 1;

JScript의 if...else 문은 x의 값이 2000이면 한 가지 동작(이 경우 z = z + 1)을 수행하고, x의 값이 2000이 아니면 다른 동작(x = x + 1)을 수행합니다. 자세한 내용은 JScript 조건부 구조를 참조하십시오.

완전 같음 연산자(===)는 숫자 데이터 형식에 대해서만 형식 변환을 수행합니다. 즉, 정수 42는 실수(double) 42와 동일한 것으로 간주되지만 이 두 가지는 문자열 "42"와는 동일하지 않습니다. 다음 JScript 코드는 이 동작을 보여 줍니다.

var a : int = 42;
var b : double = 42.00;
var c : String = "42";
print(a===b); // Displays "true".
print(a===c); // Displays "false".
print(b===c); // Displays "false".

참고 항목

개념

부울 데이터

형식 변환

기타 리소스

JScript 언어 둘러보기

JScript 조건부 구조