gpt4 book ai didi

javascript - 与简单的 for 循环混淆 - javascript

转载 作者:行者123 更新时间:2023-11-30 10:25:53 27 4
gpt4 key购买 nike

我已经做过几次 FizzBu​​zz,但从来没有遇到过这个问题。也许,这是我不理解的关于 for 循环的一些基本知识。出于某种原因,下面的代码运行时间比它应该运行的时间长 10 倍(好吧,比我认为的要长)。如果用户输入 20,它会运行到 200。我通过设置 i = 0 解决了这个问题; i < num 然后打印 i+1 到我的 div,但我仍然不明白为什么原始代码不能按预期工作。虽然我在做这件事,但我还是承认我仍然无法正确设置 JSFiddle。 http://jsfiddle.net/nngrey/hA4pg/ (这根本不会运行。)因此,对此的任何想法也将不胜感激。谢谢!

<head>
<title>Fizz Buzz</title>
<script>
function fizzbuzz(){
var num = prompt("Please enter a number between 1 and 100: ");
for(var i=1; i<num+1; i++){
if (i%3===0 && i%5===0){
document.getElementById("div1").innerHTML = div1.innerHTML+"<p>Fizz Buzz</p>";
}else if (i%3===0){
document.getElementById("div1").innerHTML = div1.innerHTML+"<p>Fizz</p>";
}else if (i%5===0){
document.getElementById("div1").innerHTML = div1.innerHTML+"<p>Buzz</p>";
}else{
document.getElementById("div1").innerHTML = div1.innerHTML+"<p>"+i+"</p>";
}
}
}
</script>
</head>

<body onLoad = "fizzbuzz()">
<div id = "div1">
<h1>Fizz Buzz</h1>
</div>
</body>

最佳答案

在您的代码中,prompt()返回一个字符串。 Javascript 将评估这一行:

      for(var i=1; i<num+1; i++){

num作为一个字符串。即 num+1 变为“20”+“1”(注意引号),即“201”。然后对比较进行数值评估,因此您的循环运行时间比应有的时间长 10 倍。

在你的修订版中i < num以数字方式计算,因此循环运行正确的时间段。

你可以强制num成为这样的数字:

      var num = Number(prompt("Please enter a number between 1 and 100: "));

num现在是一个数字,所以 20 + 1 = 21(注意 - 没有引号)并且你的循环的两个版本都应该正确运行

关于javascript - 与简单的 for 循环混淆 - javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19580842/

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