使用数值

时间:2017-01-05 09:00:52

标签: javascript

尝试使用随机数的简单开关 它似乎不起作用。总是到default案例。

var x = 0;
x = (Math.random() * 10 + 1); 

switch(x)  {
  case x >= 5:
    console.log("the number is bigger than 5");
    break;
  case x <= 5:
    console.log("the number is smaller than 5");
    break;
  default:
    console.log("strange number");
}

console.log(x);

输出始终类似于:

strange number
5.922413225153608

4 个答案:

答案 0 :(得分:4)

你无法做到这一点。你必须这样做

  $html = file_get_contents(public_path() . 'content.html');
    $dom = new \DOMDocument();
    $dom->loadHTML($html);
    var_dump($dom->getElementById('panel_header'));

答案 1 :(得分:3)

case:之间,您必须拥有

x >= 5x <= 5将为您提供truefalse,然后将x与之进行比较。由于x始终是一个数字,因此永远不会是truefalse,因此您始终会点击default

改为使用if / else if / else

答案 2 :(得分:2)

这不是switch语句在JavaScript中的工作方式, 1 你正在寻找的是if/else if/else系列而是:

if (x >= 5) {
    console.log("the number is bigger than 5");
} else if (x <= 5) {
    console.log("the number is smaller than 5");
} else {
    console.log("strange number");
}

但有两点说明:

  1. 你的第一和第二个案件都包括5个;第一个会赢。

  2. x到达最终else的唯一值是NaN(或转换为数字时转换为NaN的内容),因为{ {1}}和NaN >= 5都是NaN <= 5

  3. 在评论中你说过:

      

    谢谢,重点是练习false

    如果是这样,你要么必须做下面的事情(可能不是教师想要的那样),要么限制值的范围,因为交换机的情况是针对完全匹配。

    例如,如果您更改了代码只允许整数,则可以使用具有直通的案例:

    switch

    当你不使用var x = 0; x = Math.floor(Math.random() * 10 + 1); // Note change: Only integers switch(x) { case 5: case 6: case 7: case 8: case 9: case 10: console.log("the number is bigger than 5"); break; case 1: case 2: case 3: case 4: console.log("the number is smaller than 5"); break; default: console.log("strange number"); } console.log(x); 时,这会使用案例这一事实。

    但是您无法使用原始break执行此操作,因为要列出的x范围内的浮点值太多。

    JavaScript 1 <= x < 11确实有一项功能可以在这里使用switch,但switch几乎肯定是更好的选择。纯粹是为了完整性:

    if/else if/else

    这是有效的,因为与许多语言不同,JavaScript // PROBABLY NOT A GOOD IDEA switch (true) { case x >= 5: console.log("the number is bigger than 5"); break; case x <= 5: console.log("the number is smaller than 5"); break; default: console.log("strange number"); break; } switch被允许作为表达式,并且它们按照它们出现在{{的顺序进行测试1}}(当然不是case),使用的是第一个匹配的switch

    但同样,除非在非常非常有限的情况下,在现实世界中使用可能并不好。

答案 3 :(得分:2)

虽然switch正在使用严格比较,并且您已经在switch子句中进行了比较,但您可以将switch(true) { 语句更改为

switch(true)  {
  case x >= 5:
      console.log("the number is bigger than 5");
      break;
  case x <= 5:
     console.log("the number is smaller than 5");
     break;
  default:
     console.log("strange number");
 }

并使用剩下的,你有。