gpt4 book ai didi

javascript - TypeScript/Javascript : adding a while loop anywhere in code causes an Uncaught Type error

转载 作者:行者123 更新时间:2023-11-28 20:32:40 25 4
gpt4 key购买 nike

我根本不明白这个。添加 while 循环会导致变量抛出“未捕获的类型错误无法读取‘perp’的属性”。我尝试了很多解决方案,分离代码,添加额外的类型,尝试制作:任何类型,我真的很茫然。

小背景信息:我正在尝试制作一个名为“三人犯罪”的快速小游戏,本质上我有一个算法,可以显示最多 3 个罪犯,其中最多 2 个可能是真正的犯罪者。

所有代码均可公开查看:https://github.com/treehau5/ThreesACrime

function main(num) {
var is_over = false;
var game = new GameObject.Game(shuffled_criminals, num);

$('body').append(game.display());
$("#status").text("Turn in progress");
$('body').append('<div class="container"><p>Enter your guess<p><div class="input-append" id="turn_form"><form>\
<input class="span2" id="Text1" type="text" />\
<button class="btn" id="Button1" type="button">Go!</button>\
</form>\
</div></div>');

console.log(game.getThree());
while (true) //removing this while loop causes above line to work fine.
{ }
}

这是游戏类中的 getThree 方法

       getThree() {
var result: Criminal[] = [];
var temp: Criminal[] = _.shuffle(this.criminals);
var num_perp = 0;
while (result.length != 3) {
while ((num_perp != 3) && (result.length != 3)) {
var x: Criminal = temp.pop();
result.push(x);
if (x.perp == true)
num_perp++;
temp = _.shuffle(temp);
}
do {
temp = _.shuffle(temp);
var y: Criminal = temp.pop();
if (y.perp == false)
result.push(y);
}
while (result.length != 3)

}

return result;
}//end displayThree

我使用 underscorejs 进行洗牌,并使用 DefinelyTyped 下划线打字。

请随意查看或克隆存储库来尝试。这个错误发生在 Google Chrome 26 中。所有代码都在 game.ts、gameobject.ts 和 main.ts 中,有很多对外部库的引用,例如 underscore 和 jquery ui,我计划在我使用它们后稍微修饰一下 GUI完成主要游戏逻辑。

感谢所有费心阅读本文的人,非常感谢您的帮助。

编辑:所以我尝试使用这样的循环在游戏中放置“回合”

 while (is_over)
{
break;
}

最佳答案

在您的问题中,您使用以下示例:

while (true)          //removing this while loop causes above line to work fine.
{ }

这个紧密的循环将阻止几乎任何事情发生(通常浏览器会询问您是否要终止脚本。

如果这不是您正在使用的代码,请显示您正在使用的代码 - 最好是演示问题的缩短版本,而不是整个程序。我已经在 TypeScript 中测试了几种循环变体,发现 while 循环没有问题。

关于javascript - TypeScript/Javascript : adding a while loop anywhere in code causes an Uncaught Type error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16043752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com