Javascript布尔混淆

Javascript布尔混淆,javascript,Javascript,修复了问题,不确定如何修复。感谢您的回复:) 我的布尔值(isname)保持为真,我不知道为什么。在这个简单的游戏中,触发时会出现一个鬼魂,这部分工作正常。除非我离开“房间”回来,它会看起来好像鬼魂不在那里。只有当幽灵最初与玩家在同一房间触发时,布尔值才会正确地在完整代码中注册。如果play试图离开,则无法重新定位幽灵,即布尔值不会对应于两个整数 releaseGhost(); startTimer(); var isSame=“false”; var鬼影定位; var mapLocatio

修复了问题,不确定如何修复。感谢您的回复:)

我的布尔值(
isname
)保持为真,我不知道为什么。在这个简单的游戏中,触发时会出现一个鬼魂,这部分工作正常。除非我离开“房间”回来,它会看起来好像鬼魂不在那里。只有当幽灵最初与玩家在同一房间触发时,布尔值才会正确地在完整代码中注册。如果play试图离开,则无法重新定位幽灵,即布尔值不会对应于两个整数

releaseGhost();
startTimer();
var isSame=“false”;
var鬼影定位;
var mapLocation=5;
函数gameOver(){
如果(IsName==真){
gameMessage=“鬼杀了你。游戏结束!”;
警惕(“鬼魂杀了你,游戏结束!”);
document.body.innerHTML=“游戏结束!”;
} 
} 
//确定是否已过5秒
函数moveGhost(){
ghostLocation=Math.floor(Math.random()*12);
}
函数startTimer(){
如果(mapLocation==重影位置){
IsName=true;
窗口设置间隔(gameOver,5000);
}否则{
IsName=假;
}
}
函数releaseGhost(){
ghostLocation=Math.floor(Math.random()*12);
window.setInterval(moveGhost,30000);
}
窗口设置间隔(测试,1000);
功能测试(){
mapLocation=Math.floor(Math.random()*12);
日志(ISName、mapLocation、ghostLocation);

}
您描述了如何以及何时设置此布尔值,这让人有点困惑。但是,在我的初始视图中,我可以看到IsSame变量尚未声明

我只能认为,由于IsSame没有声明为全局变量,它默认为其默认值,这是错误的

在代码顶部,您应该这样声明变量:

var isSame = false;

请注意,虽然可以在不首先声明变量的情况下使用该变量,但这不是一种好的做法,会在不同的浏览器中导致问题

您的问题就在这个函数中

function startTimer() {
  ghostLocation = mapLocation;
  if(mapLocation === ghostLocation) {
    isSame = true;
    window.setInterval(gameOver, 5000);
  } else {
    isSame = false;
  }
}
在第一行中,将
mapLocation
的值指定给
GhoLocation
。因此比较
mapLocation===GhoLocation
总是
true
,因此行“
isSame=true
”总是运行,它将值
true
分配给
isSame


在这一点上,您应该重新思考代码,并调试代码。

startTimer
函数中,您将
重影定位
设置为相等
映射定位
,然后立即测试它们是否相等,这永远都是真的,因为你只是将它们设置为相同的值。这是原始版本,太长了,无法发布。我已经编辑,包括这一点和其他建议,现在它不会评估为真。我已经醒了24个多小时了,所以我很确定我忽略了一些简单的事情。你能提供原始代码,而不添加任何测试内容吗?对不起,我添加了这一行是为了强制它们相等,以查看错误是否在我的函数中。当我这么做的时候,它的计算结果总是真的,因为我已经编辑了代码;它永远不会被认为是真的。