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

JS: Why does variable placement break my code?

本文关键字:我的 代码 为什么 变量 JS      更新时间:2023-09-26

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

为什么这个不起作用?对我来说,它们实际上是相同的,只是顺序不同。

查看术语"提升"。这是因为您的函数声明被提升,因此它被移动到顶部。初始化不会被提升,因此var active = false保留在您放置它的位置。

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

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

变量和函数使用不同的名称可能是个好主意。

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

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