A variable is something that ``varies''. In that it can carry a value that can be changed. Contrast this to constants, that do not change at all.
JavaScript is a un-typed language - that is - a variable can hold either an integer, floating point, string, or an object at anytime regardless of what it held before.
The only provision is that you ``must'' declare variables before reading them. (This results in a run-time error if not done.)
Scope is the term to describe where the variable is defined.
Example:
work/vars.html
<HTML> <BODY> <SCRIPT LANGUAGE="JavaScript"> // integers var i; // un-initialized var j = 3; // initialized to a value // floating point var pi = 3.1419; // string var global = "global"; var string = global; document.writeln("<BR>global scope"); document.writeln("<BR>i = ", i); document.writeln("<BR>j = ", j); document.writeln("<BR>pi = ", pi); document.writeln("<BR>global = ", global); document.writeln("<BR>string = ", string); function f() { var string = "local"; // initialized in local scope var i = 5; // initialized in local scope j = 5; // set in global scope document.writeln("<BLOCKQUOTE><BR>In function f()"); document.writeln("<BR>global = ", global); // document.writeln("<BR>local = ", local); // this is a run-time error document.writeln("<BR>string = ", string); document.writeln("<BR>i = ", i); document.writeln("<BR>j = ", j); k = 5; // this declares and initializes k // however,not a good practice document.writeln("<BR>k = ", k); document.writeln("<BR>Out of function f()</BLOCKQUOTE>"); } f(); // call the function document.writeln("<BR>global scope"); document.writeln("<BR>i = ", i); document.writeln("<BR>j = ", j); document.writeln("<BR>pi = ", pi); document.writeln("<BR>global = ", global); document.writeln("<BR>string = ", string); </SCRIPT> </BODY> </HTML>