JavaScript初学者变量混乱

时间:2015-07-10 00:18:55

标签: javascript function variables

从书中学习JS,练习题是:

  

修改问题1的代码以请求从用户显示时间表;代码   应该继续请求并显示时间表,直到用户输入-1。另外,做一个检查   确保用户输入有效号码;如果号码无效,请询问用户   重新输入它。

这是建议的解决方案:

function writeTimesTable(timesTable, timesByStart, timesByEnd) {
  for (; timesByStart <= timesByEnd; timesByStart++) {
    document.write(timesTable + " * " + timesByStart + " = " +
      timesByStart * timesTable + "<br />");
  }
}
var timesTable;
while ((timesTable = prompt("Enter the times table", -1)) != -1) {
  while (isNaN(timesTable) == true) {
    timesTable = prompt(timesTable + " is not a " +
      "valid number, please retry", -1);
  }
  if (timesTable == -1) {
    break;
  }
  document.write("<br />The " + timesTable +
    " times table<br />");
  writeTimesTable(timesTable, 1, 12);
}
<!DOCTYPE html>
<html lang="en">

<head>
  <title>Chapter 4: Question 2</title>
</head>

<body>
  <script>
  </script>
</body>

</html>

这是我的代码,它也运行相同的结果,没有!= -1

function writeTimesTable(timesTable, timesByStart, timesByEnd) {
  for (; timesByStart <= timesByEnd; timesByStart++) {
    document.write(timesTable + " * " + timesByStart + " = " +
      timesByStart * timesTable + "<br />");
  }
}
var timesTable;
while (timesTable = prompt("Enter the times table", -1)) {
  while (isNaN(timesTable) == true) {
    timesTable = prompt(timesTable + " is not a " +
      "valid number, please retry", -1);
  }
  if (timesTable == -1) {
    break;
  }
  document.write("<br />The " + timesTable +
    " times table<br />");
  writeTimesTable(timesTable, 1, 15);
}
<!DOCTYPE html>
<html lang="en">

<head>
  <title>Chapter 4: Question 2</title>
</head>

<body>
  <script>
  </script>
</body>

</html>

为什么我在第一个while语句中需要!= -1参数,因为我的代码运行得很好?它为什么存在,它的用途是什么?

3 个答案:

答案 0 :(得分:1)

检查-1几乎是不是多余的。它捕获条件&#39;用户取消提示&#39;并且&#39;用户输入了一个空字符串&#39;评估为false。在您的版本中,这将终止循环,但要求是终止于用户输入&#39; -1&#39;。

答案 1 :(得分:0)

如果while循环没有返回任何内容,它将返回-1(或false)。在原始示例的情况下,我假设!= -1条件仅用于示例目的,因此对初学者更有意义。

我们假设您只想在用户输入while时终止-2循环。为此,您需要在循环中指定!= -2条件,但-1仍会终止循环。

答案 2 :(得分:0)

您告诉浏览器/编译器继续执行while循环中的代码,直到用户输入-1。当timesTable获得值&#34; -1&#34; - 也就是说,当用户输入&#34; -1&#34; - while循环停止运行。

// timesTable gets what the user enters in the prompt
// while timesTable is not equal to -1, execute the code in brackets
while ((timesTable = prompt("Enter the times table", -1)) != -1) {
  while (isNaN(timesTable) == true) {
    timesTable = prompt(timesTable + " is not a " +
      "valid number, please retry", -1);