Microsoft® Visual Basic® Scripting Edition
VBScript 변수
 VBScript 자습서
 이전 페이지다음 페이지

 

변수란?
변수는 스크립트가 실행되는 동안 바뀌는 프로그램 정보를 저장할 수 있는 컴퓨터 메모리 위치를 참조하는 편리한 자리 표시자입니다. 예를 들어, ClickCount라는 변수를 만들어 사용자가 특정 웹 페이지의 개체를 클릭한 횟수를 저장할 수도 있습니다. 변수가 컴퓨터 메모리에 저장되는 위치는 중요하지 않습니다. 그러나 사용자가 변수의 값을 알아 보거나 바꾸기 위해 변수를 이름만으로만 참조해야 한다는 것이 중요합니다. VBScript에서 변수는 언제나 유일한 기본 데이터 형식인 Variant로 작성됩니다.
변수 선언
스크립트에서는 Dim문, Public문 및 Private문을 사용하여 변수를 명시적으로 선언합니다. 사용 예는 아래와 같습니다.
 Dim DegreesFahrenheit
각 변수 이름을 쉼표로 구분하여 여러 개의 변수를 선언합니다. 사용 예는 아래와 같습니다.
 Dim Top, Bottom, Left, Right
스크립트 안에서 그냥 변수 이름만을 사용하여 변수를 암시적으로 선언할 수 있습니다. 그러나 스크립트의 여러 곳에서 변수 이름을 잘못 입력하여 스크립트를 실행할 때 예기치 않은 오류를 일으킬 수 있으므로 이런 방법은 좋지 않습니다. 이런 이유로 모든 변수를 명시적으로 선언해야 할 경우 Option Explicit문을 사용할 수 있습니다. Option Explicit문은 스크립트의 첫째 명령문이어야 합니다.
변수 명명 규칙
변수 이름은 아래와 같이 VBScript 일반 명명 규칙을 따릅니다.
변수의 범위와 수명
선언된 위치에 따라 변수의 범위가 결정됩니다. 프로시저 안에서 변수를 선언하면 해당 프로시저에 있는 코드만이 그 변수의 값을 액세스하고 바꿀 수 있습니다. 이 변수는 지역 범위를 가지며 프로시저 수준 변수라고 합니다. 그러나 프로시저 밖에서 변수를 선언하면 그 변수는 스크립트의 모든 프로시저에서 인식됩니다. 이 변수는 스크립트 수준 변수가 되며, 스크립트 수준의 범위를 가집니다.

변수가 존재하는 기간을 그 변수의 수명이라고 합니다. 스크립트 수준 변수의 수명은 변수가 선언된 시점에서 스크립트 실행이 완료된 시점까지입니다. 그러나 프로시저 수준 변수는 프로시저 안에 있는 동안에만 존재하고 그 프로시저를 마치면 없어집니다. 지역 변수는 프로시저를 실행하는 동안에는 이상적인 임시 저장 공간이 됩니다. 지역 변수는 각각 선언된 프로시저 안에서만 인식되므로 여러 개의 다른 프로시저에서 같은 이름의 지역 변수를 사용할 수 있습니다.

변수의 값 할당
아래와 같이 식을 만들어 값을 변수에 할당합니다. 변수는 식의 왼쪽에, 변수에 할당할 값은 식의 오른쪽에 나옵니다.
 B = 200
스칼라 변수와 배열 변수
대개의 경우 선언한 변수 하나에 하나의 값을 할당합니다. 하나의 값을 가지는 변수는 스칼라 변수입니다. 그러나 어떤 경우에는 연관된 둘 이상의 값을 변수 하나에 할당하는 것이 편리합니다. 그런 경우 일련의 값들을 가지는 변수를 만들 수 있습니다. 이를 배열 변수라고 합니다. 배열 변수와 스칼라 변수는 동일한 방법으로 선언되지만, 배열 변수는 변수 이름 뒤에 괄호( )를 붙여 선언합니다. 아래 용례에서는 11개 요소를 포함하는 1차원 배열을 선언하고 있습니다.
 Dim A(10)
괄호 안의 숫자는 10이지만, VBScript의 모든 배열은 0을 기준으로 하므로 실제로 11개 요소를 가지게 됩니다. 0 기준 배열에서 배열 요소의 개수는 언제나 괄호 속의 숫자에 하나를 더한 숫자입니다. 이런 종류의 배열을 고정 크기 배열이라고 합니다.

배열에 색인을 사용하여 데이터를 배열의 각 요소에 할당할 수 있습니다. 아래 용례에서는 0에서 10까지의 색인을 사용한 각 배열 요소에 데이터를 할당합니다.

 A(0) = 256
 A(1) = 324
 A(2) = 100
 . . .
 A(10) = 55
이와 비슷하게 원하는 특정 배열 요소에 색인을 사용하여 요소를 검색할 수 있습니다. 사용 예는 아래와 같습니다.
 . . . 
 SomeVariable = A(8)  
 . . . 
배열은 1차원으로 한정되지 않습니다. 대부분의 사람들은 3차원이나 4차원 이상의 차원을 이해하기 어렵지만 60개까지의 차원을 지정할 수 있습니다. 다중 차원은 괄호 안에서 배열 크기의 수를 쉼표로 구분하여 선언됩니다. 아래 용례에서 MyTable 변수는 6개의 행과 11개의 열을 가지는 배열 변수입니다.
 Dim MyTable(5, 10)
2차원 배열에서 첫째 숫자는 항상 행의 개수이며, 둘째 번호는 열의 개수입니다.

또한 스크립트가 실행되는 동안 크기가 변하는 배열도 선언할 수 있으며, 이를 동적 배열이라고 합니다. 동적 배열은 Dim문이나 ReDim문을 사용하여 프로시저의 맨 앞에 선언됩니다. 그러나 동적 배열에서는 차원의 크기나 개수를 괄호 안에 두지 않습니다. 사용 예는 아래와 같습니다.

 Dim MyArray()
 ReDim AnotherArray()
동적 배열을 사용하려면 앞에 나온 Redim문에 뒤이어 나오는 ReDim문을 사용하여 차원의 개수와 각 차원의 크기를 결정해야 합니다. 아래 용례에서 앞의 ReDim문은 동적 배열의 처음 크기를 25로 지정합니다. 뒤이어 나오는 ReDim문은 배열 크기를 30으로 바꾸는 한편 Preserve 키워드에 의해 크기를 바꾸면서 그 배열의 내용도 보존합니다.
 ReDim MyArray(25)
 . . . 
 ReDim Preserve MyArray(30)
횟수에 상관없이 동적 배열의 크기를 바꿀 수 있지만, 이전의 배열 크기보다 작게 만들면 제거되는 요소의 데이터를 잃게 됩니다.