strange behaviour of variable named “status” in javascript

It’s because you run your code in global context! var bound variables are bound to the function scope. If you have no function you are in global context, which means in a browser you are on the window object.

This code will log Demo:

<script>
  var foo = "Demo";
  console.log(window.foo);
</script>

Now your code breaks because window.status is reserved.

An easy fix is to surround your code by a function to provide a new context for your variables, which is always good practice.

<script>
    (function() {
        var status = [true,false,true,false,true,false,true,false,true,false];
        var status1 = [true,false,true,false,true,false,true,false,true,false];

        document.getElementById("demo1").innerHTML = status[2];
        document.getElementById("demo2").innerHTML = status1[2];
    })();
</script>

Leave a Comment