名为“的变量的奇怪行为”;“地位”;在javascript中

名为“的变量的奇怪行为”;“地位”;在javascript中,javascript,Javascript,var状态=[真,假,真,假,真,假,真,假,真,假]; var status1=[真,假,真,假,真,假,真,假,真,假]; document.getElementById(“demo1”).innerHTML=status[2]; document.getElementById(“demo2”).innerHTML=status1[2]; 更改变量名“status”,它是Windows保留字。 在HTML中,您必须避免使用HTML和Windows对象和属性的名称,单词status是一个保留关


var状态=[真,假,真,假,真,假,真,假,真,假]; var status1=[真,假,真,假,真,假,真,假,真,假]; document.getElementById(“demo1”).innerHTML=status[2]; document.getElementById(“demo2”).innerHTML=status1[2];
更改变量名“status”,它是Windows保留字。
在HTML中,您必须避免使用HTML和Windows对象和属性的名称,单词
status
是一个保留关键字,因此您需要将其重命名为
status3
或其他名称。请参阅下面的代码片段。您还可以通过访问此链接查看保留字列表:


var status3=[真、假、真、假、真、假、真、假、真、假]; var status1=[真,假,真,假,真,假,真,假,真,假]; document.getElementById(“demo1”).innerHTML=status3[2]; document.getElementById(“demo2”).innerHTML=status1[2];
这是因为您在全局上下文中运行代码<代码>变量绑定变量绑定到函数范围。如果没有函数,则处于全局上下文中,这意味着在浏览器中,您位于
窗口
对象上

此代码将记录
Demo

<script>
  var foo = "Demo";
  console.log(window.foo);
</script>
ES6/ES2015解决方案 声明全局变量时使用
let
const
。因此,可以避免与全局对象的或和其他属性发生冲突

演示如下:

let

让状态=[真,假,真,假,真,假,真,假,真,假]; 让status1=[真,假,真,假,真,假,真,假,真,假]; document.getElementById(“demo1”).innerHTML=status[2]; document.getElementById(“demo2”).innerHTML=status1[2];
<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>