否则如果被忽略

时间:2013-02-21 11:07:42

标签: javascript function if-statement

我有一个if else声明:

<script>
function myFunction()
{
var x="";
var myProb = Math.round(Math.random() * 1);
if (myProb<0.3)
  {
  x="Good morning";
  }
else if (myProb<0.6)
  {
  x="Good day";
  }
else
  {
  x="Good evening";
  }
document.getElementById("demo").innerHTML=x;
}
</script>

执行“if”和“else”位,但完全省略“else if”位。 “美好的一天”永远不会发生!

这是为什么? 我只是看不出我做错了什么。

6 个答案:

答案 0 :(得分:8)

myProb只会是01,所以else if永远不会成为满足的条件。


我的假设是您希望01之间的小数位数。在这种情况下,请删除Math.Round()

var myProb = Math.random();

答案 1 :(得分:3)

由于Math.round,Math.round(Math.random() * 1)的结果只能是0或1,所以你为什么永远不会进入中间呢。

答案 2 :(得分:2)

Math.round(Math.random() * 1);只能产生0或1. 0会因“早安”而下降而1则会因“晚上好”而下降。

答案 3 :(得分:1)

在您的代码中

if (myProb<0.3)
  {
  x="Good morning";
  }

之前

是真的

else if (myProb<0.6)
  {
  x="Good day";
  }

math.round生成0或1

答案 4 :(得分:1)

尝试

Math.round(Math.random() * 100) / 100

或者只是

Math.random()

答案 5 :(得分:-1)

稍微改变你的函数以将myProb作为参数给出:

function myFunction(myProb)
{
var x="";
if (myProb<0.3)
  {
  x="Good morning";
  }
else if (myProb<0.6)
  {
  x="Good day";
  }
else
  {
  x="Good evening";
  }
console.log(x);
}

myFunction(0.4)

在Chrome中执行此操作会将Good day打印到控制台。你的问题似乎是你正在将值Math.random()四舍五入。像这样分离代码可以更清楚地了解错误所在。