![](/img/trans.png)
[英]Jquery/Javascript only running a custom function once after CSS changes
[英]Why Javascript changes inputs of a function after running it?
我有一个在 javascript 中运行的应用程序(游戏)。 I used to code Flash games, (and also C++ and Java years ago), so I am using the canvas to run the game in javascript. 关于 javascript 如何“不同”地工作,我学到了很多“有趣”的东西,但我遇到了一个我无法理解的问题,也无法在网上找到任何原因。
Javascript 将运行 function 然后(似乎)任意决定将输入更改为 0。我说是任意的,因为这个函数在上个月运行得很好,直到今天才决定采取奇怪的行动。 function 正确触发,然后立即将触发它的输入更改为 0,并运行 function 中的所有代码行。 我不明白这是怎么发生的,我在代码中所做的任何更改都不会影响结果。 我发现的唯一解决方案是删除 function 并使用一些不同的风格编写一个新的......这种方法不是最好的方法。 有任何想法吗? 另外,这是我的第一个问题,所以我不知道正确的提问格式。 我的代码长达数千行,并且被调用的 function 是孤立的,所以没关系。
如果重要的话,frameEarring、policeAmount、stoleJewelry 是公共变量。 function 触发是因为 earringFrame > 0,但是... howCanThisLogicallyEqualZero = 0,getValueOfItem(howCanThisLogicallyEqualZero) = 0,policeAmount += 0,setDanger(50) = 50。
这是代码
if (frameEarring > 0) {
let howCanThisLogicallyEqualZero = frameEarring;
getValueOfItem(howCanThisLogicallyEqualZero);
policeAmount += howCanThisLogicallyEqualZero * 10;
frameEarring = 0, setDanger(50);
stoleJewelry = true; //adds message to phone
}
这是在 chrome96 中运行并显示的游戏的图像
那应该是不可能的。 chrome 调试器可能会在这里混淆。 有时开发人员工具会做一些奇怪的事情,尤其是在涉及转译和源映射时。
在条件检查之前添加一些日志记录,例如console.log('frameEarring before check', frameEarring)
,并在条件分支内console.log('frameEarring is greater than zero', frameEarring)
。 我打赌你会看到你期望的值。
如果没有可重现的示例或对您的构建过程的理解,我无法告诉您为什么您的调试器会这样做。
最后,我会避免逗号运算符:
frameEarring = 0, setDanger(50);
如果我是你。 无论如何,您可能打算在此处使用分号,这会更有意义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.