这段代码是用简单的ActionScript编写的,但是我假设我的这个问题将在所有具有 bool(boolean) 数据类型的语言中发生。

我只是单击阶段,以便我的 bool(boolean) 变量反转其值,然后跟踪/打印/记录它是新值。但是,它始终跟踪true,而不是每次单击鼠标都在true和false之间切换。

我究竟做错了什么?

var myBool:Boolean;

stage.addEventListener(MouseEvent.CLICK, mouseClickHandler);

function mouseClickHandler(evt:MouseEvent):void
    {
    changeBoolean(myBool);
    }

function changeBoolean(boolean:Boolean):void
    {
    boolean = !boolean;
    trace(boolean);
    }

最佳答案

您正在将值传递给函数,而不是引用。这意味着changeBoolean函数内部的 bool(boolean) 值是从myBool变量复制的,因此当您在函数内部对其进行更改时,它并没有真正更改myBool变量。基本上有两种解决方案:

  • 将函数更改为不接受参数,并在其内部更改myBool变量或
  • 更改函数,使其返回 bool(boolean) 参数,并在调用函数时,将myBool值设置为函数
  • 的结果

    07-24 09:50
    查看更多