Difference Between Var, Let And Const In JavaScript

Introduction

In this article, we will learn about the difference between var, let, and const in ES6.

Difference between var and let

The variable in JavaScript has three scopes.

  1. Global scope
  2. Function scope
  3. Block scope

In global and function scope both let and var behave the same. The main difference is when the var and let are used in block scope. Let's understand it with the help of an example.

Global scope

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <title>VarLetConst</title>
</head>
<body>
    <table border="1">
        <thead>
            <th>Global scope</th>
            <th>Function scope</th>
        </thead>
        <tbody>
            <tr>
                <td id="GlobalScopeVar">
                </td>
                <td id="GlobalFunctionScopeVar">
                </td>
            </tr>
            <tr>
                <td id="GlobalScopeLet">
                </td>
                <td id="GlobalFunctionScopeLet">
                </td>
            </tr>
        </tbody>
    </table>
    <script type="text/javascript">
        //Global scope for var
        var VarGlobalNo=5;
        document.getElementById('GlobalScopeVar').innerHTML=VarGlobalNo;
        function CheckScopeVar()
        {
            document.getElementById('GlobalFunctionScopeVar').innerHTML=VarGlobalNo;
        }
        CheckScopeVar();

        //Global scope for let
        let LetGlobalNo=5;
        document.getElementById('GlobalScopeLet').innerHTML=LetGlobalNo;
        function CheckScopeLet()
        {
            document.getElementById('GlobalFunctionScopeLet').innerHTML=LetGlobalNo;
        }
        CheckScopeLet();
    </script>
</body>
</html>

Output

VarLet Const

We can clearly see that both let and var are accessible inside and outside the function being global.

Function scope

<script type="text/javascript">

    //Function scope for var
    function CheckScopeVar()
    {
        var VarFunctionNo=5;
        document.getElementById('FunctionScopeVar').innerHTML=VarFunctionNo;
    }
    CheckScopeVar();
    //document.getElementById('OutsideFunctionScopeVar').innerHTML=VarFunctionNo;

    //Function scope for let
    function CheckScopeLet()
    {
        let LetFunctionlNo=5;
        document.getElementById('FunctionScopeLet').innerHTML=LetFunctionlNo;
    }
    CheckScopeLet();
    //document.getElementById('OutsideFunctionScopeLet').innerHTML=LetFunctionlNo;

</script>

Output

VarLet Const output

We can not use let and var outside a function. If we try to use let and var outside function it will give an error.

Error

Reference error

Block Scope

<script type="text/javascript">

    //Block scope for var
    {
        var VarBlockNo=5;
        document.getElementById('OutsideBlockScopeVar').innerHTML=VarBlockNo;
    }
    //document.getElementById('InsideBlockScopeVar').innerHTML=VarBlockNo;

    //Block scope for let
    {
        let LetBlockNo=5;
        document.getElementById('InsideBlockScopeLet').innerHTML=LetBlockNo;
    }
    //document.getElementById('OutsideBlockScopeLet').innerHTML=LetBlockNo;

</script>

Output

Output

Now var and let play behave in a different manner. Var is accessible inside and outside the block but let is only accessible inside the block.

Error

Reference error

const

We use const when we have a fixed value. We can't reassign another value to the const.

const ConstNo=5;
document.getElementById('ConstNo').innerHTML=ConstNo;

This will work perfectly.

 work perfectly

But if we try to reassign another value to const it will give an error.

const ConstNo=5;
document.getElementById('ConstNo').innerHTML=ConstNo;
// ConstNo=10; // This will result in an error as you cannot reassign a value to a constant.

Error

Error

Summary

I wish the concept of var, let and const is clear now. If you have any queries feel free to ask in the comment section.