For循环已初始化但未输入

For loop initialized but not entered

本文关键字:未输 输入 初始化 循环 For      更新时间:2023-09-26

My for循环适用于某些值,而不适用于其他值。区别似乎在于我初始化时使用的计数器。举个例子,timesTable 12和startFrom 1总是有效的。但是,如果我将startFrom更改为3,则不会发生任何事情。

var timesTable = prompt("Enter times table value:", "");
var startFrom = prompt("Enter startfrom value:", "");
manyTimes(timesTable,startFrom);
function manyTimes(baseValue, startValue){
  var loopCounter = startValue;
  for (; loopCounter <= baseValue; loopCounter++)
  {
    result = baseValue * loopCounter;
    document.write(baseValue + " * " + loopCounter + " = " + result + "<br/>");
  }
}

调试器实际上显示初始化已经发生,但document.write从未触发。

运行中的调试器图像

有人知道这到底是什么原因吗?

调试器清楚地表明,您的边界是字符串,根据字典顺序,"3"优于"12",因此永远不会满足循环条件。

在比较和增加之前,您需要将字符串解析为数字

function manyTimes(baseValue, startValue){
  baseValue = parseInt(baseValue,10)
  var loopCounter = parseInt(startValue,10);
  for (; loopCounter <= baseValue; loopCounter++)
  {
    result = baseValue * loopCounter;
    document.write(baseValue + " * " + loopCounter + " = " + result + "<br/>");
  }
}