# Scoping and declaring variables

A variable's scope refers to the area in which the variable is known and can be referenced. There are three types of variable scope in ActionScript:

- Local variables are available within the function body in which they are declared (delineated by curly braces).
- Timeline variables are available to any Timeline if you use a target path.
- Global variables are available to any Timeline, even if you do not use a target path.

Note: Classes defined in external scripts also support public, private, and static variable scopes. For more information, see Creating classes with ActionScript 2.

### Local variables

To declare local variables, use the `var` statement inside the body of a function. A local variable is scoped to the block, and expires at the end of the block. A local variable not declared within a block expires at the end of its script.

For example, the variables `i` and `j` are often used as loop counters. In the following example, `i` is used as a local variable; it only exists inside the function `makeDays`:

    function makeDays() {
    	var i;
    	for( i = 0; i < monthArray[month]; i++ ) {

    		_root.Days.attachMovie( "DayDisplay", i, i + 2000 );

    		_root.Days[i].num = i + 1;
    		_root.Days[i]._x = column * _root.Days[i]._width;
    		_root.Days[i]._y = row * _root.Days[i]._height;

    		column = column + 1;

    		if (column == 7 ) {

    			column = 0;
    			row = row + 1;
    		}
    	}
    }

Local variables can also help prevent name collisions, which can cause errors in your movie. For example, if you use `name` as a local variable, you could use it to store a user name in one context and a movie clip instance name in another; because these variables would run in separate scopes, there would be no collision.

It's good practice to use local variables in the body of a function so that the function can act as an independent piece of code. A local variable is only changeable within its own block of code. If an expression in a function uses a global variable, something outside the function could change its value, which would change the function.

### Timeline variables

To declare Timeline variables, use the `var` keyword with the assignment (`=`) operator.

### Global variables

Global variables and functions are visible to every Timeline and scope in your document, provided they are not obscured by identifiers with the same names in inner scopes.

To create a variable with global scope, use the `_global` identifier before the variable name. For example, the following code creates the global variable `myName`:

    _global.myName = "George";