Understanding the ActionScript Language > About variables > Using variables in a script |  |

Using variables in a script

You must declare a variable in a script before you can use it in an expression. If you use an undeclared variable, as in the following example, the variable's value will be `undefined` and your script will generate an error:

    getURL(myWebSite);
    myWebSite = "http://www.shrimpmeat.net";

The statement declaring the variable `myWebSite` must come first so that the variable in the `getURL` action can be replaced with a value.

You can change the value of a variable many times in a script. The type of data that the variable contains affects how and when the variable changes. Primitive data types, such as strings and numbers, are passed by value. This means that the actual content of the variable is passed to the variable.

In the following example, `x` is set to 15 and that value is copied into `y`. When `x` is changed to 30 in line 3, the value of `y` remains 15 because `y` doesn't look to `x` for its value; it contains the value of `x` that it received in line 2.

    var x = 15;
    var y = x;
    var x = 30;

As another example, the variable `inValue` contains a primitive value, 3, so the actual value is passed to the `sqrt` function and the returned value is 9:

    function sqrt(x){
    	return x * x;
    }

    var inValue = 3;
    var out = sqr(in);

The value of the variable `inValue` does not change.

The object data type can contain such a large and complex amount of information that a variable with this type doesn't hold the actual value; it holds a reference to the value. This reference is like an alias that points to the contents of the variable. When the variable needs to know its value, the reference asks for the contents and returns the answer without transferring the value to the variable.

The following is an example of passing by reference:

    var myArray = ["tom", "dick"];
    var newArray = myArray;
    myArray[1] = "jack";
    trace(newArray);

The above code creates an Array object called `myArray` that has two elements. The variable `newArray` is created and is passed a reference to `myArray`. When the second element of `myArray` is changed, it affects every variable with a reference to it. The `trace` action sends `tom, jack` to the Output window.

In the next example, `myArray` contains an Array object, so it is passed to function `zeroArray` by reference. The `zeroArray` function changes the content of the array in `myArray`.

    function zeroArray (theArray){
    	var i;
    	for (i=0; i < theArray.length; i++) {
    		theArray[i] = 0;
    	}
    }

    var myArray = new Array();
    myArray[0] = 1;
    myArray[1] = 2;
    myArray[2] = 3;
    zeroArray(myArray);

The function `zeroArray` accepts an Array object as a parameter and sets all the elements of that array to 0. It can modify the array because the array is passed by reference.