名为“的变量的奇怪行为”;“地位”;在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>