为什么我会得到结果 6 <= X = false?

Why do I get the result 6 <= X = false?

我正在学习 JavaScript,我正在尝试根据 Beginning JavaScript 中的示例改进代码。具体来说,我正在尝试获取代码以检查结束值是否大于起始值。

如果我输入 50 的起始值和 6 或 8 的结束值,那么 end <= start 我得到 false,即使 6 和 8 都小于 50。如果我输入任何其他值小于超过50,我明白了。我测试过的任何起始值都有同样的问题。我在逻辑上找不到任何错误,所以我一定是误解了代码(或者只是盲目)。

谢谢!

<body>
  <script>
    while (isNaN(start) == true) {
      var start = prompt("Enter starting value", "");
    }


    while (isNaN(end) || end <= start) {
      var end = prompt("Enter ending value", "");
      document.write((end <= start) + "<br/>");
      document.write(start + "<br/>");
      document.write(end + "<br/>");
    }
  </script>
</body>

您正在比较字符串表示形式。你应该使用 parseInt.

试试这个代码:

<body>
  <script>
    while (isNaN(start) == true) {
      var start = prompt("Enter starting value", "");
    }


while (isNaN(end) || end <= start) {
  var end = prompt("Enter ending value", "");
  document.write((end.parseDouble <= start.parseDouble) + "<br/>");
  document.write(start + "<br/>");
  document.write(end + "<br/>");
}

正如您所说的,您是 Js 的新手,因此我不会标记您的问题。但是考虑一下您编写的这段代码的一些事情:

  1. 此处不应将 NaN 用于 checking/validations
  2. NaN 总是 return 值 NaN 因此使用整数根本不是最佳实践。
  3. 最后进行如下修改

    while (isNaN(start) == true) {
      var start = prompt("Enter starting value", "");
    }    
    
    while (isNaN(end) || (parseInt(end) <= parseInt(start))) {
      var end = prompt("Enter ending value", "");
      document.write((parseInt(end) <= parseInt(start)) + "<br/>");
      document.write(start + "<br/>");
      document.write(end + "<br/>");
    }
    

谢谢和干杯:)