我正在尝试一个系统,当您单击按钮时,它会变为active
状态。然后当您点击屏幕上的其他按钮时,如果您的"活动",则会发生另一个事件,而不是常规事件。
我得到了它的工作,但我对某些事感到困惑。这是工作代码:
dom.el("skill").onclick = active;
function active(){
active = true;
}
var active = false;
将全局变量active
放置在列表的底部可以解决问题,但我最初将它放在最顶层,但这不起作用。
var active = false;
dom.el("skill").onclick = active;
function active(){
active = true;
}
为什么这个不起作用?对我来说,他们几乎是一样的,只是以不同的顺序。
答案 0 :(得分:4)
查看“吊装”一词。这是因为你的函数声明被提升,因此它被移到了顶部。初始化不会被提升,因此var active = false
会保留在您放置的位置。
在第一种情况下,首先发生函数声明,然后将函数设置为onclick处理程序。
在第二种情况下,您将false
设置为处理程序。
为变量和函数设置不同的名称可能是个好主意。
答案 1 :(得分:1)
var active = false; dom.el("skill").onclick = function (){ active = true; }
这就是你应该怎么做的。对函数和布尔值使用相同的变量可能在某些情况下有效,但它不是一个好的样式。就是不要这样做。