다음을 통해 공유


데이터 복사, 전달 및 비교

JScript에서 데이터를 복사, 전달 및 비교하는 방식은 데이터가 저장된 방법에 따라 다르며, 데이터 저장 방식은 데이터 형식에 따라 다릅니다. JScript에서는 데이터를 값으로 또는 참조로 저장합니다.

값으로 처리와참조로 처리

JScript에서 숫자와 부울 값(truefalse)은 값으로 복사, 전달 및 비교됩니다. 이 과정에서 컴퓨터의 메모리 공간이 할당되며 원래 값을 이 공간에 복사합니다. 원래 값과 복사 값은 별개의 엔터티이므로 어느 하나가 변경되어도 다른 하나에 영향을 주지 않습니다. 두 개의 숫자 또는 부울 값은 동일한 값을 가지면 같은 것으로 간주합니다.

JScript에서 개체, 배열 및 함수는 참조로 복사, 전달 및 비교됩니다. 이 과정에서는 기본적으로 원래 항목에 대한 참조를 만들어 그 참조를 복사 값처럼 사용합니다. 원래 값과 복사 값 중 어느 하나가 변경되면 두 값이 모두 달라집니다. 실제로는 한 개의 엔터티만 있는 것이며, 복사 값은 데이터에 대한 또 하나의 참조에 불과합니다.

두 변수를 참조로 비교하려면 완전히 동일한 엔터티를 참조해야 합니다. 예를 들어, 별개의 두 Array 개체는 동일한 요소를 포함하더라도 항상 동일하지 않은 것으로 비교됩니다. 제대로 비교하려면 변수 중 하나가 다른 하나에 대한 참조라야 합니다. 두 Array가 동일한 요소를 갖는지 확인하려면 toString() 메서드의 결과를 비교합니다.

마지막으로, JScript에서는 문자열이 참조로 복사되고 전달됩니다. 문자열을 비교하는 방법은 문자열이 개체인지 여부에 따라 결정됩니다. new String("something")을 사용하여 만든 두 개의 String 개체는 참조로 비교됩니다. 두 문자열 중 하나 또는 두 문자열이 모두 리터럴이거나 기본 문자열 값인 경우에는 값으로 비교됩니다. 자세한 내용은 JScript 할당 및 같음 연산자를 참조하십시오.

참고

ASCII 문자와 ANSI 문자 집합은 대문자가 소문자보다 순서상 우선하도록 구성되어 있습니다. 예를 들어, "Zoo"가 "aardvark"보다 앞에 옵니다. 대소문자를 구분하려면 두 문자열에 toUpperCase() 또는 toLowerCase()를 호출합니다.

함수 매개 변수

JScript에서 매개 변수를 값으로 함수에 전달하면 함수 안에서만 존재하는 별도의 매개 변수 복사본을 만들게 됩니다. 개체와 배열을 참조로 전달하더라도 함수에서 새 값으로 직접 덮어쓰면 새 값은 함수 외부에 반영되지 않습니다. 개체 속성 또는 배열 요소에 대한 변경 내용만 함수 외부에 표시됩니다.

예를 들어, 다음 프로그램에는 두 개의 함수가 있습니다. 첫 번째 함수는 입력 매개 변수를 덮어써서 매개 변수를 변경하더라도 원래 입력 인수에는 영향을 주지 않습니다. 두 번째 함수에서는 개체를 덮어쓰지 않고 개체의 속성을 변경합니다.

function clobber(param) {
   // Overwrite the parameter; this will not be seen in the calling code
   param = new Object();
   param.message = "This will not work.";
}

function update(param) {
    // Modify the property of the object; this will be seen in the calling code.
    param.message = "I was changed.";
}

// Create an object, and give it a property.
var obj = new Object();
obj.message = "This is the original.";

// Call clobber, and print obj.message.
clobber(obj);
print(obj.message);

// Call update, and print obj.message.
update(obj);
print(obj.message);

이 코드는 다음과 같이 출력됩니다.

This is the original.
I was changed.

데이터 비교

JScript에서는 데이터를 값 또는 참조로 비교할 수 있습니다. 값으로 테스트를 수행하려면 별개의 두 항목을 비교하여 서로 같은지를 결정합니다. 이러한 비교는 보통 바이트를 단위로 하여 이루어집니다. 참조로 테스트할 때는 두 항목이 같은 항목을 참조하는지 검사합니다. 같은 항목을 참조하면 동일한 것으로 간주되며, 그렇지 않으면 바이트별로 완전히 같은 값을 포함하더라도 서로 다른 것으로 간주됩니다.

문자열은 문자열이 개체인지 여부에 따라 값 또는 참조로 비교될 수 있습니다. 두 문자열이 모두 String 개체이면 참조로 비교되고, 그렇지 않으면 값으로 비교됩니다. 따라서 각각 만들어질 때는 별개로 만들어졌지만 내용이 같은 두 문자열은 같은 것으로 간주됩니다. 두 String 개체의 값을 비교하려면 먼저 toString 또는 valueOf 메서드를 사용하여 개체를 개체가 아닌 문자열로 변환한 다음, 결과 문자열을 비교합니다. 자세한 내용은 JScript 할당 및 같음 연산자를 참조하십시오.

참고 항목

개념

JScript 할당 및 같음 연산자

데이터 형식 요약

기타 리소스

JScript 언어 둘러보기

JScript 함수