VBScript Tutorials - Herong's Tutorial Examples - Version 5.20, by Dr. Herong Yang

∟Assigning an Array to a Scalar Variable

This section provides a tutorial example on how to assign an array to a scalar variable. Actually, a copy of the original array is created and the reference of the copy if assigned the scalar variable.

What will happen, if you try to assign an array to a scalar variable with an assignment statement?

Read the following VBScript code example and guess what will happen:

   Dim aScalar, anArray(1)
   aScalar = anArray

VBScript has several surprise for us:

  • If you think that the assignment statement is not valid, you are wrong. Assigning an array to a scalar variable is valid.
  • If you think that scalar variable, aScalar, will become an array variable, you are wrong too. Scalar variable, aScalar, will stay as a scalar variable. It will be used to store a reference of an array.
  • If you think that scalar variable, aScalar, will hold a reference of the array represented by array variable, anArray, you are wrong again. A new dynamic-size array will be created as a copy of the array represented by array variable, anArray.

To show you how an array can be assigned to a scalar variable, I wrote the following example, array_assignment.html:

<html>
<body>
<!-- array_assignment.html
 - Copyright (c) 2015, HerongYang.com, All Rights Reserved.
-->
<pre>
<script language="vbscript">
   Dim aScalar
   Dim anArray(1)
   
   aScalar = "Rabbit"
   anArray(0) = "Dog"
   anArray(1) = "Cat"

   document.writeln()
   document.writeln("Before the assignment and changes:")
   document.writeln("   TypeName(aScalar): " & TypeName(aScalar))
   document.writeln("   TypeName(anArray): " & TypeName(anArray))

   aScalar = anArray  'A new dynamic-size array is created
                      'The reference of the new array is in aScalar

   aScalar(0) = "Pig" 'Array reference works like an array

   ReDim Preserve aScalar(2)   'The referenced array is re-sized
   aScalar(2) = "Fox"

   document.writeln()
   document.writeln("After the assignment and changes:")
   document.writeln("   TypeName(aScalar): " & TypeName(aScalar))
   document.writeln("   TypeName(anArray): " & TypeName(anArray))
   document.writeln("   aScalar(0): " & aScalar(0))
   document.writeln("   aScalar(1): " & aScalar(1))
   document.writeln("   aScalar(2): " & aScalar(2))
   document.writeln("   anArray(0): " & anArray(0))
   document.writeln("   anArray(1): " & anArray(1))
</script>
</pre>
</body>
</html>

Here is the output:

Before the assignment and changes:
   TypeName(aScalar): String
   TypeName(anArray): Variant()

After the assignment and changes:
   TypeName(aScalar): Variant()
   TypeName(anArray): Variant()
   aScalar(0): Pig
   aScalar(1): Cat
   aScalar(2): Fox
   anArray(0): Dog
   anArray(1): Cat

The output shows that:

  • (TypeName(aScalar): String) shows that scalar variable, aScalar, holds a String value before the assignment statement: (aScalar = anArray).
  • (TypeName(aScalar): Variant()) shows that scalar variable, aScalar, holds an array value (indirectly through a reference) after the assignment statement: (aScalar = anArray).
  • (aScalar(0): Pig) and (anArray(0): Dog) prove that the array value referenced by scalar variable, aScalar, is a copy of the original array.

Note that in some other languages like Java, assigning an array to a new variable creates a new reference to the original array. No new array will be created.

Table of Contents

 About This Book

 Introduction of VBScript - Visual Basic Scripting Edition

 Variant Data Type, Subtypes, and Literals

 Arithmetic Operations

 Numeric Comparison Operations and Logical Operations

 String Operations - Concatenation and Comparison

 Variable Declaration and Assignment Statement

 Expression and Order of Operation Precedence

 Statement Syntax and Statement Types

 Array Data Type and Related Statements

►Array References and Array Assignment Statements

►Assigning an Array to a Scalar Variable

 Array References Work Like Arrays

 "Array()" Function - Returning a Scalar Reference of an Array

 Creating a Copy of an Array

 "Type mismatch" Runtime Error - Assignments to Array Variables

 Conditional Statements - "If ... Then" and "Select Case"

 Loop Statements - "For", "While", and "Do"

 "Function" and "Sub" Procedures

 Built-in Functions

 Inspecting Variables Received in Procedures

 Error Handling Flag and the "Err" Object

 Regular Expression Pattern Match and Replacement

 scrrun.dll - Scripting Runtime DLL Library

 Creating Your Own Classes

 IE Web Browser Supporting VBScript

 IIS ASP Server Supporting VBScript

 WSH (Windows Script Host)

 References

 Printable Copy - PDF Version

Assigning an Array to a Scalar Variable - Updated in 2015, by Dr. Herong Yang