Home Articles FAQs XREF Games Software Instant Books BBS About FOLDOC RFCs Feedback Sitemap
irt

Q1321 Can you explain the scope of global and local variables in relation to functions?

You are here: irt.org | FAQ | JavaScript | Function | Q1321 [ previous next ]

Take for example the following code:

<script language="JavaScript"><!--
// declare global variable
var variable1;

// declare and initialise global variables
var variable2 = '2';
variable3 = '3';

document.write('1 = ' + variable1 + '<br>');     // 1 = undefined
document.write('2 = ' + variable2 + '<br>');     // 2 = 2
document.write('3 = ' + variable3 + '<br>');     // 3 = 3
document.write('6 = ' + variable6 + '<br>');     // 6 = undefined
document.write('6 = ' + variable6 + '<br>');     // JavaScript Error: variable6 is not defined.

function myFunction() {
    // declare and initialise local variables
    var variable1 = '1 amended';
    var variable2;

    // initialise global variable value
    variable3 = '3 amended';

    // declare local variable
    var variable4;

    // declare and initialise local variable
    var variable5 = '5';

    // declare and initialise global variable
    variable6 = '6';

    document.write('1 = ' + variable1 + '<br>'); // 1 = 1 amended
    document.write('2 = ' + variable2 + '<br>'); // 2 = undefined
    document.write('3 = ' + variable3 + '<br>'); // 3 = 3 amended
    document.write('4 = ' + variable4 + '<br>'); // 4 = undefined
    document.write('5 = ' + variable5 + '<br>'); // 5 = 5
    document.write('6 = ' + variable6 + '<br>'); // 6 = 6
    document.write('7 = ' + variable7 + '<br>'); // 7 = undefined
    document.write('8 = ' + variable8 + '<br>'); // 8 = undefined

    // declare local variable
    var variable7;

    // declare and initialise local variable
    var variable8 = '8';

    document.write('8 = ' + variable8 + '<br>'); // 8 = 8
    document.write('9 = ' + variable9 + '<br>'); // JavaScript Error: variable9 is not defined.
}

myFunction();

document.write('1 = ' + variable1 + '<br>');     // 1 = undefined
document.write('2 = ' + variable2 + '<br>');     // 2 = 2
document.write('3 = ' + variable3 + '<br>');     // 3 = 3 amended
document.write('4 = ' + variable4 + '<br>');     // JavaScript Error: variable4 is not defined.
document.write('5 = ' + variable5 + '<br>');     // JavaScript Error: variable5 is not defined.
document.write('6 = ' + variable6 + '<br>');     // 6 = 6
document.write('7 = ' + variable7 + '<br>');     // JavaScript Error: variable7 is not defined.
document.write('8 = ' + variable8 + '<br>');     // JavaScript Error: variable8 is not defined.
document.write('9 = ' + variable9 + '<br>');     // JavaScript Error: variable9 is not defined.
//--></script>

If we declare but not initalise a variable outside a function it should be global in scope, but undefined until the point at which it is initialised - e.g. variable1.

If we declare (with or without the var keyword) and initialise a variable outside a function it should be global in scope and accessible immediately - e.g. variable2 and variable3

If we declare (and optionally initialise) a variable with the var keyword inside a function, even though a global variable of the same name exists outside of the function, then it should be local in scope and not effect the value of the global variable - e.g. variable1 and variable2.

If we declare and initialise a variable without the var keyword inside a function, if a global variable of the same name exists outside of the function, then it should effect the value of the global variable, and still remain global - e.g. variable3.

If we declare but not initalise a variable with the var keyword inside a function it should be local in scope, but undefined across the complete function until the point at which it is initialised - e.g. variable4 and variable7.

If we declare and initialise a a variable with the var keyword inside a function it should be local in scope and accessible immediately - e.g. variable5.

If we declare and initialise a variable without the var keyword inside a function it should be global in scope, but not accessible prior to the function being invoked - e.g. variable6.

If we declare and initalise a variable with the var keyword inside a function it should be local in scope, but undefined across the complete function until the point at which it is initialised - e.g. variable8.

Feedback on 'Q1321 Can you explain the scope of global and local variables in relation to functions?'

©2013 Martin Webb