Javascript if-else解释

Javascript if-else解释,javascript,if-statement,syntax,while-loop,Javascript,If Statement,Syntax,While Loop,这个小程序应该让浏览器猜测用户输入的内容。是“多少个手指”。因此,我希望它能够强制用户使用数字5或更少 如果输入大于程序可用的选项范围,程序将出错并中断浏览器。我尝试过以各种方式重新排列脚本的嵌套,以了解JS“思考”的方式。不幸的是,我仍然不知道Javascript是如何解释代码流的 我在工作中使用SQL,在数学上熟悉PEMDAS的逻辑。我认为这是一个类似的情况,我遗漏了一些语法的逻辑含义。在我看来,这是一个非常简单的程序 我不明白为什么当我的输入满足执行IF子句的条件时,程序不执行警报。它在E

这个小程序应该让浏览器猜测用户输入的内容。是“多少个手指”。因此,我希望它能够强制用户使用数字5或更少

如果输入大于程序可用的选项范围,程序将出错并中断浏览器。我尝试过以各种方式重新排列脚本的嵌套,以了解JS“思考”的方式。不幸的是,我仍然不知道Javascript是如何解释代码流的

我在工作中使用SQL,在数学上熟悉PEMDAS的逻辑。我认为这是一个类似的情况,我遗漏了一些语法的逻辑含义。在我看来,这是一个非常简单的程序

我不明白为什么当我的输入满足执行IF子句的条件时,程序不执行警报。它在Else子句上运行良好

document.getElementById(“猜测”).onclick=function(){
var a=document.getElementById(“myNumber”).value;
var b=6;
var x=Math.random();
x=x*b;
x=数学楼层(x);
如果(a>b){
警惕(“你没有那么多手指”);
}否则{
var-gotit=false;
var猜测=1;
while(gotit==false){
如果(a==x){
gotit=true;
警告(“成功!答案是“+x+”或“+a+”我花了“+猜测+”猜测!”);
}否则{
猜测++;
var x=Math.random();
x=x*b;
x=数学楼层(x);
}
}
}
}
你举起了多少根手指


猜猜看如果(a>=b)
,则需要将测试更改为
。代码猜测从
0
5
的数字,因此如果用户输入
6
,它将永远不会匹配。但是
a>b
仅当他们输入
7
或更高时才会成功--
6
不大于
b

document.getElementById(“猜测”).onclick=function(){
var a=document.getElementById(“myNumber”).value;
var b=6;
var x=Math.random();
x=x*b;
x=数学楼层(x);
如果(a>=b){
警惕(“你没有那么多手指”);
}否则{
var-gotit=false;
var猜测=1;
while(gotit==false){
如果(a==x){
gotit=true;
警告(“成功!答案是“+x+”或“+a+”我花了“+猜测+”猜测!”);
}否则{
猜测++;
var x=Math.random();
x=x*b;
x=数学楼层(x);
}
}
}
}
你举起了多少根手指


猜猜看首先,您正在重复随机生成,因此我将其分解为一个函数。其次,您的逻辑是错误的(猜测的可能性为0个手指,猜测的可能性为6个手指的可能性很小)

Math.random
实际做的是返回一个介于
0
1
之间的值,因此我认为您可以看到那里的逻辑错误
(0到1)*6=可能是0或6

如果你从一个函数开始计算

  function getRandomFinger(amountOfFingers) {
    var x = Math.random();
    x = (x * (amountOfFingers-1))+1; // ((0 to 1)*4)+1 because always at least one finger but possibly 4 more
    return Math.round(x);
  }
你可以在需要的时候打电话。那么实际上定义手指的数量更有意义,对吗?不仅仅是一些看似随机的数字

  var b = 5; // 5 fingers on the hand

添加这些少量更改,您的代码就会正常工作。

是的,您是正确的。。我的一只手上没有7个或更多的手指。不要输入
3.14159
来计算手指的数量…我理解设置函数的建议,但我不理解你在数学上的意思。我得仔细看看,把它弄得乱七八糟,才能抓住它。谢谢你的帮助!嗯,
(0到1)*6
可以给出一个介于
0
6
之间的值,对吗?这意味着您可能会得到
0
6
,这两个值对于您来说都是无效的<代码>((0到1)*4)+1将始终给出一个介于
1
(+1)和
5
(0到1)*4)之间的值,这就是您所追求的。10-4我现在明白了。它可以生成0,这是可以的,因为我可以举起0个手指,但它不会生成1。这确实让我想调整它,以便您不能选择小于0的值。再次感谢您的投入!“Math.random()函数返回一个范围为[0,1]的浮点伪随机数,即从0(包含)到但不包括1(排除)”哦,好吧。那么你的数学就没问题了。只需将
b
变量更改为
5
,将其分解为一个函数,然后运行
x=Math.floor(x*(amountOfFingers+1))
。这并不是因为执行的逻辑有很大不同,只是因为它更清晰易懂。编写清晰易懂的代码只是一个好习惯。谢谢你,巴尔马,我衷心感谢你的帮助!