Difference Between var and let in JavaScript



To declare a variable in javascript we can use var, let or const keyword. Earlier var was only way to declare variable in javascript.In ES6, let and const keywords were introduced as a better way to declare variables. Now it is advised to use let instead of var to declare a variable.

In this article we will be understanding the differences between var and let in Javascript. We will be differentiating between let and var based on the features mentioned in the table:

Features let var
Scope The let keyword is block scoped. The let keyword is function scoped.
Redeclaration We can not redeclare variable if the variable is already declaraed earlier in the scope. Variable can be redeclared again in same scope.
Hoisting Using let keyword variable are hoisted but due to Temporal Dead Zone(TDZ), it returns a RefrenceError. Yes, var keyword allows hosting.
Temporal Dead Zone (TDZ) TDZ exists untill variable is declared. TDZ doesn't exist. It returns undefined if used before declaration.
Global Object Property In global scope, let do not become properties of the global object. In global scope, var becomes properties of the global object.

Example 1

In this example, we have declared variable using let and var inside if statement which is inside a function. But the output is displayed only for var keyword because it is function scoped and let is block scoped.

<!DOCTYPE html>
<html lang="en">
<head>
    <title>
        Scope in let and var
    </title>
</head>
<body>
    <div id="varkey"></div>
    <div id="letkey"></div>
    <script>
        function fun() {
            if (true) {
                var x = 50;
                let y = 20;
            }
            document.getElementById("varkey")
                .innerHTML = "var x = " + x;
            document.getElementById("letkey")
                .innerHTML = "let y = " + y;
        }
        fun();
    </script>
</body>
</html>

Example 2

In this example, we are calling variable using var keyword before declaration which shows undefined in output, where as let keyword throws RefrenceError.

<!DOCTYPE html>
<html lang="en">
<head>
    <title>Document</title>
</head>
<body>
    <div id="varkey"></div>
    <script>
        document.getElementById("varkey")
            .innerHTML = "var x = " + x;
        var x= 10;
    </script>
</body>
</html>

Conclusion

In this article, we discussed the between between let and var keyword on basis of various features such as scope, redeclaration, hoisting, TDZ and global object property with examples.

Updated on: 2024-11-22T14:53:19+05:30

4K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements