Strange behavior of a variable called "status" in javascript
<!DOCTYPE html>
<html>
<body>
<p id="demo1"></p>
<p id="demo2"></p>
<script>
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>
</body>
</html>https://jsfiddle.net/vdr2r38r/
Why is the behavior different from identical variables with different names?
+4
3 answers
This is because you are running your code in a global context! varbound variables are bound to the scope of the function. If you do not have a function, you are in a global context, which means that you are on the object in the browser window.
This code will write Demo:
<script>
var foo = "Demo";
console.log(window.foo);
</script>
Now your code breaks because it is window.status reserved .
, , , .
<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>
+5
status , status3 - . . . , : http://www.w3schools.com/js/js_reserved.asp
<!DOCTYPE html>
<html>
<body>
<p id="demo1"></p>
<p id="demo2"></p>
<script>
var status3 = [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 = status3[2];
document.getElementById("demo2").innerHTML = status1[2];
</script>
</body>
</html>, .
+3