JS:为什么变量放置会破坏我的代码?

时间:2016-07-11 09:23:08

标签: javascript

我正在尝试一个系统,当您单击按钮时,它会变为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;
 }

为什么这个不起作用?对我来说,他们几乎是一样的,只是以不同的顺序。

2 个答案:

答案 0 :(得分:4)

查看“吊装”一词。这是因为你的函数声明被提升,因此它被移到了顶部。初始化不会被提升,因此var active = false会保留在您放置的位置。

在第一种情况下,首先发生函数声明,然后将函数设置为onclick处理程序。

在第二种情况下,您将false设置为处理程序。

为变量和函数设置不同的名称可能是个好主意。

答案 1 :(得分:1)

var active = false; dom.el("skill").onclick = function (){ active = true; }

这就是你应该怎么做的。对函数和布尔值使用相同的变量可能在某些情况下有效,但它不是一个好的样式。就是不要这样做。