Basics of Variables
I think it’s easiest to grasp variables by starting with so-called “simple” variables, also called “primitive” variable types. By simple, I mean variables that only store a single piece of information at a time. For example, a numeric variable stores just a single number; a string, just a sequence of zero or more quoted characters. Simple variables will be the focus in this chapter, with more advanced alternatives—such as arrays and objects—coming in Chapter 6, Complex Variable Types.
var myVar = 'easy peasy';
- var, used to declare a variable
- the variable’s name
- =, the assignment operator
- the variable’s value
quantity = 14;
(The semicolon is used to terminate a statement. It’s not required, but you should always use it.)
var fullName = 'Larry Ullman';
The distinction between using var and not using var has to do with the variable’s scope, a topic that will mean more once you begin defining your own functions (see Chapter 7, Creating Functions). Undeclared variables—those referenced for the first time without using var—will have global scope by default, and global variables are frowned upon (see the sidebar for more).
Also understand that whether or not you assign a value to the variable when it’s declared has no impact on its scope. Both lines above used to declare the fullName variable result in a variable with the same scope.
fullName = 2;
Note that each variable is only declared once, but you can use var to declare multiple variables at the same time:
var firstName, lastName;
You can even declare multiple variables at the same time while simultaneously assigning values:
var firstName = 'Larry', lastName = 'Ullman';
As a final note on the var keyword, you should always declare your variables as soon as possible in your code, within the scope in which they are needed. Variables declared outside of any functions should be declared at the top of the code; variables declared within a function definition should be declared as the first thing within that function’s code. The technical reason for this is because of something called “hoisting,” but declaring variables as soon as possible is also standard practice in languages without hoisting issues.
- The name must start with a letter, the underscore, or a dollar sign.
- The rest of the name can contain any combination of letters, underscores, and numbers (along with some other, less common characters).
- You cannot use spaces, punctuation, or any other characters.
- Names are case-sensitive.
As you probably already know or guessed from what you’ve seen in this book or online, a single equals sign is the assignment operator, used to assign a value on the right to the variable on the left. Here is the declaration of, and assignment to, a numeric variable:
var rate; rate = 5.25;
This can be condensed into a single line:
var rate = 5.25;
That one line not only declares a variable, but initializes it: provides an initial value. You do not have to initialize variables when you declare them, but sometimes it will make sense to.
Simple Value Types
A string is any sequence of zero or more quoted characters. You can use single or double quotation marks, but you must use the same type to end the string as you used to begin it:
- ‘This is a string.’
- “This is also a string.”
If you need to include a single or double quotation mark within the string, you can either use the other mark type to delineate the string or escape the potentially problematic character by prefacing it with a backslash:
- “I’ve got an idea.”
- ‘Chapter 4, “Simple Variable Types”’
- ‘I\’ve got an idea.’
- “Chapter 4, \“Simple Variable Types\””
What will not work is:
- ‘I’ve got an idea.’
- “Chapter 4, “Simple Variable Types””
Note that a string does not need to have any characters in it: Both ‘’ and “” are valid strings, called empty strings.
Two more simple, yet special, values are null and undefined. Again, these are case-sensitive words. The difference between them is subtle. null is a defined non-value and is best used to represent the consequence of an action that has no result. For example, the result of a working Ajax call could be null, which is to say that no data was returned.
Conversely, undefined is no set value, which is normally the result of inaction. For example, when a variable is declared without being assigned a value, its value will be undefined (Figure 4.1):
var unset; // Currently undefined.
Figure 4.1. Because this variable has not yet been assigned a value, its value is undefined.
Similarly, if a function does not actively return a value, then the returned value is undefined (you’ll see this in Chapter 7).
Both null and undefined are not only different from each other, but different from false, which is a known and established negative value. As you’ll see in Chapter 5, Using Control Structures, when used as the basis of a condition, both null and undefined are treated as FALSE, as are the number 0 and the empty string. Still, there are differences among them.