Altcademy - a Forbes magazine logo Best Coding Bootcamp 2023

What are Variables in JavaScript?

When you start learning programming, one of the first concepts you'll come across is the idea of variables. Variables are fundamental building blocks of any programming language, and JavaScript is no exception.

In this blog post, we'll explore variables in JavaScript. We'll discuss what variables are, why they are important, how to create and use them, and some common pitfalls to avoid when working with variables.

What are variables?

In the simplest terms, a variable is a container or a storage space for holding data. Think of it like a box where you can store things. In programming, these "things" are values, which can be numbers, strings, or any other type of data.

Variables allow you to store, access, and manipulate data in your code. They are essential for making your code flexible and reusable.

For example, let's say you're writing a program that calculates the area of a rectangle. You could write your code like this:

const area = 10 * 5;
console.log(area);

In this example, the numbers 10 and 5 represent the length and width of the rectangle, respectively. The result of the multiplication, 50, is the area of the rectangle. But what if you want to calculate the area of a different rectangle? You'd have to change the numbers in your code and run it again.

This is where variables come in handy. Instead of using fixed numbers, you can use variables to store the length and width of the rectangle:

const length = 10;
const width = 5;
const area = length * width;
console.log(area);

Now, if you want to calculate the area of a different rectangle, you can simply change the values of the length and width variables, and the rest of the code stays the same.

Creating variables in JavaScript

In JavaScript, you can create a variable using one of three keywords: var, let, or const. Here's a quick overview of each keyword:

var: This is the oldest way to declare a variable in JavaScript. It has some quirks and peculiarities that can lead to confusing behavior, so it's generally recommended to avoid using var in modern JavaScript code.

let: This keyword was introduced in ECMAScript 2015 (also known as ES6) as a better way to declare variables. let has more predictable behavior than var and should be used when you need a variable that can be reassigned to a new value.

const: This keyword was also introduced in ECMAScript 2015 and is used to declare variables that are meant to be constant, meaning their value shouldn't change throughout the program. If you try to reassign a new value to a const variable, you'll get an error.

Here's how you can create variables using let and const:

let myVariable = 42;
const myConstant = "Hello, world!";

In these examples, myVariable is declared with the let keyword, so its value can be changed later in the code. On the other hand, myConstant is declared with the const keyword, so its value cannot be changed.

Variable naming rules

When you create a variable, you need to give it a name. Variable names in JavaScript must follow these rules:

  1. Variable names can contain letters, numbers, underscores (_), and dollar signs ($).
  2. Variable names cannot start with a number.
  3. Variable names are case-sensitive, meaning myVariable and MyVariable are treated as different variables.
  4. Variable names cannot be one of the reserved words in JavaScript, like if, else, function, etc.

It's also a good idea to follow some naming conventions when creating variables. One common convention is to use "camelCase" for variable names, where the first word is lowercase and each subsequent word starts with an uppercase letter:

let myVariableName = "This is camelCase";

Using variables in your code

Once you've created a variable, you can use it in your code by referring to its name. You can perform operations with variables, just like you would with normal values.

Here's an example of using variables in a simple addition operation:

let numberOne = 10;
let numberTwo = 20;
let sum = numberOne + numberTwo;
console.log(sum); // Output: 30

You can also use variables in more complex expressions:

let base = 5;
let exponent = 3;
let result = base ** exponent;
console.log(result); // Output: 125

In this example, we're using the ** operator to raise base to the power of exponent, and then storing the result in the result variable.

Variable scope and hoisting

In JavaScript, variables have a concept called "scope," which determines where a variable can be accessed and used in your code. Variables created with let and const have "block scope," meaning they are only accessible within the block of code where they were declared.

For example:

if (true) {
  let blockScopedVariable = "I'm inside the block";
}
console.log(blockScopedVariable); // Error: blockScopedVariable is not defined

In this example, blockScopedVariable is declared inside the if block, so it's not accessible outside of that block.

One of the quirks of the var keyword is that it creates variables with "function scope" or "global scope" depending on where it's declared. This can lead to confusing behavior and is one of the reasons why it's generally recommended to avoid using var.

Another concept related to variable scope is "hoisting." Hoisting is a mechanism in JavaScript where variable declarations are moved to the top of their scope during the compilation phase. This means that you can use a variable before it's actually declared in your code, but this can also lead to confusing behavior and bugs.

Here's an example of hoisting:

console.log(hoistedVariable); // Output: undefined (not an error!)
var hoistedVariable = 42;

In this example, you might expect to get an error because we're trying to use hoistedVariable before it's declared. However, due to hoisting, the variable declaration is moved to the top of the scope, so the code is actually interpreted like this:

var hoistedVariable;
console.log(hoistedVariable);
hoistedVariable = 42;

This behavior does not occur with variables declared using let or const, which is another reason to prefer these keywords over var.