在递归中操作变量
Manipulating a variable in a recursion
作为练习,我试图用一点递归来点燃一个怪物。工作正常,但是我想在递归运行时使用按钮增加额外的伤害。到目前为止,所有使用按钮设置额外变量的函数都不起作用,因为我似乎找不到在递归运行时影响变量的方法。基本上在下面的示例中,我希望按下按钮来执行当前"如果(怪物 === 55)..."代码的一部分正在执行。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<script type="text/javascript">
function print(text) { document.querySelector("#content").innerHTML += text + "'n"; }
</script>
<title>Monster</title>
</head>
<body>
<input type="button" id="btnPoke" value="Poke it" onclick="" />
<pre id="content"></pre>
<script type="text/javascript">
var monster = 100;
var extra = 10;
function setonfire(monster, extra) {
setTimeout(function () {
print("Monster: " + monster + ", Extra: " + extra);
if (monster > 0) {
if (monster === 55) {
monster = monster - extra;
print("Poke for an extra " + extra);
}
monster = monster - 5;
setonfire(monster, extra);
}
}, 200);
}
setonfire(monster, extra);
</script>
</body>
</html>
我希望这不会太愚蠢,但我真的很茫然,可能陷入了思想错误。我希望任何能告诉我概念错误的地方的输入。我的怀疑要么是范围问题,要么是递归
Javascript 按值传递原语。 因此,当您调用setonfire(monster, extra);
时,您将值 100 传递给该方法,它永远不会影响外部monster
变量。
可以直接在方法中引用monster
对象。所以:
var monster = 100;
var extra = 10;
function setonfire(extra) {
setTimeout(function () {
print("Monster: " + monster + ", Extra: " + extra);
if (monster > 0) {
if (monster === 55) {
monster = monster - extra;
print("Poke for an extra " + extra);
}
monster = monster - 5;
setonfire(extra);
}
}, 200);
}
setonfire(extra);
否则,将monster
设为对象,例如:
var monster = { health: 100 };
var extra = 10;
function setonfire(monster, extra) {
setTimeout(function () {
print("Monster: " + monster.health + ", Extra: " + extra);
if (monster.health > 0) {
if (monster.health === 55) {
monster.health = monster.health - extra;
print("Poke for an extra " + extra);
}
monster.health = monster.health - 5;
setonfire(monster, extra);
}
}, 200);
}
setonfire(monster, extra);
编辑:可变大小写
相关文章:
- 将文本框中的值用于按钮窗体操作上的变量
- 操作javascript变量[HTML]以只显示文本
- JavaScript在变量中存储操作?有可能吗
- 当输入为变量时,.replace.不执行任何操作
- 流星技术/模式,用于等待数据库变量更改,然后在 in 之后执行某些操作
- 如何在JavaScript中定义和操作Date变量
- 是否可以在jquery启动或每次操作时将变量传递给它
- 网络浏览器正在成为“;严格的“;用于Javascript中未定义变量的操作
- 如果已发生操作,请增加变量
- 将java脚本变量传递给相同的表单操作php文件参数
- 在递归中操作变量
- 传递 js 变量以形成操作 url
- 将变量数据从操作脚本 3 发送到 JavaScript
- 使用网址生成网址.操作助手和 JavaScript 变量的正确编码
- Ember.js 车把 - 在操作助手中使用变量
- 使用变量和数字的操作
- 将变量从 JavaScript 传递到操作类
- Less中的变量操作
- 变量操作
- Angularjs 1.5 -使用service的组件通信-异步变量操作